Excel: Daten aus csv importieren

  • #1
C

chillingodi

Mitglied
Themenersteller
Dabei seit
16.07.2004
Beiträge
5
Reaktionspunkte
0
Hallo zusammen,

ich hab eine CSV Datei in der 44 Zahlenwerte durch Semikolon getrennt hintereinander in einer Zeile stehen.

Nun würde ich gern die einzelnen Zahlenwerte untereinander jeweils in ein Feld in einer Excel Tabelle bekommen. Den ersten Wert z.B in A1 den zweiten in A2 usw.

Außerdem sollte die Excel Tabelle jedesmal beim öffnen die csv Datei neu einlesen und die Werte aktualisieren.

Um die Sache nicht ganz so einfach zu machen sollte die ganze Geschichte auch noch unter Excel 95 funktionieren.

Gruß odi
 
  • #2
Hallo chillingodi,

das mit Excel95 wird schwierig, da ich keines mehr habe.

Für Excel 97 sollte es kein Problem sein.

Ich werd mal ein Beispiel für Excel97 zusammenbauen und dann können wir schauen, ob excel95 das auch verdaut.

Mit ein Feld meinst Du eine Zelle ? Also Wert, Zeilenvorschub, Wert, ...

Und das immer in die gleiche Zelle ?

Gruß Matjes :)
 
  • #3
Hallo Matjes,

genau mit Feld meine ich Zelle.

Aber nicht immer in die gleiche Zelle, oder wie meinst du das? Ich geb nochmal ein Beispiel:

Meine csv-Datei:
12; 14; 16; 8;

Gewünschtes Ergebnis in Excel-Datei:
A <- Spaltenüberschrift
1 12
2 14
3 16
4 8
^
Zeile

Schon mal vielen Dank im Voraus.

Gruß odi
 
  • #4
Hallo chillingodi,

folgender Makro macht das gewünschte unter Excel97.

Dateinamen und Zielblatt mußt Du noch anpassen.
(siehe <<< A N P A S S E N >>>)

Code:
Sub Excel_CSVImportZahlenAusDatei()
'Import aus einer CSV-Datei, in der Zahlen durch Semikolon getrennt sind
'1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16,6;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;
'
'Die Csv-Datei muß im Verzeichnis des Excel-Mappe liegen
'Die Zeilen in der CSV-Datei werden auf dem Blatt->Import' spaltenweise ausgegeben
'(Anfang bei A1)


 -><<< A N P A S S E N >>>
  Const c_CSV_DATEINAME = MyZahlenDaten.csv
  Const c_BLATT_ZIEL = Import
 -><<< A N P A S S E N   E N D E >>>
    
  Dim wb As Workbook, wsz As Worksheet
  Dim wbcsv As Workbook, wscsv As Worksheet
  Dim MyPath As String, Dateiname_Full As String
  Dim l_LetzteZeile As Long, l_LetzteSpalte As Long, dWert As Double
  Dim z As Long, sp As Long
    
 ->Aktive Arbeitsmappe setzen
  Set wb = ActiveWorkbook
  
      
 ->Pfad zur aktiven Arbeitsmappe
  MyPath = wb.Path
  
 ->vollständiger Pfad CSV-Datei
  Dateiname_Full = MyPath & Application.PathSeparator & c_CSV_DATEINAME
  
 ->ZielBlatt setzen
  On Error Resume Next
  Set wsz = wb.Worksheets(c_BLATT_ZIEL)
  If Err.Number <> 0 Then Err.Clear
  On Error GoTo 0
  If wsz Is Nothing Then
    MsgBox Zielblatt-> & c_BLATT_ZIEL &-> nicht vorhanden.
    GoTo AUFRAEUMEN
  End If
  
 ->CSV-Datei nicht vorhanden ?
  If Dir(Dateiname_Full) =  Then
    MsgBox CSV-Datei-> & Dateiname_Full &-> nicht vorhanden.
    GoTo AUFRAEUMEN
  End If
  
 ->CSV-Datei öffen, Trennzeichen->;'
  On Error Resume Next
  Workbooks.Open _
    FileName:=MyPath & Application.PathSeparator & c_CSV_DATEINAME, _
    Delimiter:=;
  If Err.Number <> 0 Then Err.Clear
  On Error GoTo 0
  Set wbcsv = ActiveWorkbook
  Set wscsv = ActiveSheet
  
 ->Prüfen, ob beim Öffnen etwas schiefgegangen ist
  If wbcsv.Name = wb.Name Then
    MsgBox CSV-Datei-> & Dateiname_Full &-> konnte nicht geöffnet werden.
    GoTo AUFRAEUMEN
  End If
  
 ->Benutzen Bereich feststellen
  l_LetzteZeile = wscsv.UsedRange.Rows.Count
  l_LetzteSpalte = wscsv.UsedRange.Columns.Count
  
  
 ->Werte der Zeilen in Spalten des Zielblattes übertragen
  On Error Resume Next
  For z = 1 To l_LetzteZeile
    For sp = 1 To l_LetzteSpalte
      dWert = CDbl(wscsv.Cells(z, sp).Value)
      If Err.Number <> 0 Then
        Err.Clear
        wsz.Cells(sp, z).Value = Fehler
      Else
        
        wsz.Cells(sp, z).Value = dWert
      End If
    Next
  Next
  
 ->CSV-Datei schliessen
  wbcsv.Close Savechanges:=False
  
AUFRAEUMEN:
  Set wb = Nothing: Set wsz = Nothing
  Set wbcsv = Nothing: Set wscsv = Nothing
End Sub

Wenn der Makro funktioniert, kannst du ihn beim Öffnen aufrufen.
Code muß in die Codeseite der Arbeitsmappe gelegt werden.
(DieseArbeitsmappe)
Code:
Private Sub Workbook_Open()
  Call Excel_CSVImportZahlenAusDatei
End Sub

Gruß Matjes  :)
 
Thema:

Excel: Daten aus csv importieren

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben