Sie können einfach aufgebaute Textdateien mit dem Textkonvertierungs-Assistenten von Excel öffnen und die Daten in einem Tabellenblatt abspeichern. Falls allerdings noch weitere Programmlogik eingebaut werden muss, um z. B. eine spezielle Datenauswahl durchzuführen, dann kommen Sie nicht an einem eigenen Importprogramm vorbei. Eigenes Importprogramm Das folgende Programm soll als Grundgerüst für ein solches Import-Programm dienen. Es liest sogenannte CSV-Dateien (CSV = Commaseparated Values). Das sind Textdateien, in denen ein Datensatz pro Zeile steht. Die Daten des Datensatzes sind durch festgelegte Zeichen (z. B. Semikolon) voneinander getrennt.
Die Textdatei kann die Dateiendung .txt haben. Häufig wird auch die Dateiendung .csv verwendet. Zum Einlesen der Zeilen kommt das Zerlegen der Zeilen in die einzelnen Daten hinzu. Dies wird mit der bereits bekannten Funktion Split() durchgeführt. Anschließend werden die Daten übersichtlich auf einem Tabellenblatt angeordnet:
Sub DatensaetzeLesen()
Dim Zeile As String
Dim T() As String
Dim i As Integer, k As Integer
ThisWorkbook.Worksheets("Tabelle2").Activate
On Error GoTo Fehler
' Datei öffnen zum Lesen
Open ThisWorkbook.Path & "\eindaten.txt" _
For Input As 1
i = 1
' Solange bis Datei-Ende
Do Until EOF(1)
' Zeile lesen
Line Input #1, Zeile
' Zeile zerlegen
T = Split(Zeile, ";")
Fork=0ToUBound(T)
Cells(i, k + 1).Value = T(k)
Next k
i = i + 1
Loop
' Datei schließen
Close 1
Range("A:E").Columns.AutoFit
Exit Sub
Fehler:
MsgBox (Err.Description)
End Sub
Die Anwendung ist eine Erweiterung des vorherigen Beispiels »Lesen aus Textdateien«. An dieser Stelle werden nur die zusätzlichen Komponenten erläutert. Es wird ein dynamisches Datenfeld deklariert. Dieses wird für das Zerlegen der Zeilen benötigt. Nach dem Lesen einer Zeile wird die Zeile mit der Funktion Split() zerlegt und in dem dynamischen Datenfeld gespeichert. Alle Elemente des Datenfelds werden nebeneinander in einzelnen Zellen ausgegeben. Die Anzahl der Elemente eines Datensatzes und damit die Obergrenze des dynamischen Datenfelds werden mit der Funktion UBound() erkannt.