VBA – Textdateien lesen (Lesen, Parsen und Importieren)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on Dezember 20, 2022

In diesem Tutorial zeigen wir Ihnen, wie Sie Inhalte aus Textdateien lesen und mit VBA in Arbeitsblätter einfügen können.

Inhalt einer Textdatei in ein Arbeitsblatt einlesen

Der einfachste Weg, den Inhalt einer Textdatei zu lesen, besteht darin, ihn in eine Zelle eines Arbeitsblatts zu kopieren.

Sub FSOTextdateiInhaltEinfuegen() 
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set DateiZumLesen = FSO.OpenTextFile("C:\Test\TestDatei.txt", ForReading) 'Hier den Pfad zu Ihrer Textdatei einfügen
    
    TextZeichenkette = DateiZumLesen.ReadAll
    
    DateiZumLesen.Close
    
    ThisWorkbook.Sheets(1).Range("A1").Value = TextZeichenkette 'Sie können das Arbeitsblatt und die Zelle angeben, in die der Inhalt der Textdatei eingefügt werden soll

End Sub

Der obige Code verwendet das FileSystemObject. Um es verwenden zu können, müssen Sie einen Verweis auf die VB-Skript-Laufzeitbibliothek (Engl. VB Script Run-Time Library) setzen. Siehe hier für weitere Informationen.

Ohne die Verwendung von FileSystemObject können Sie den Inhalt Ihrer Textdatei mit dem folgenden Code einfügen. Wenn Ihre Textdatei einen Zeilentrenner enthält, wird sie Zeile für Zeile eingefügt.

Sub TextdateiInhaltEinfuegen() 
    Dim wbExcel As Workbook, wbText As Workbook
    Dim wsExcel As Worksheet
    Set wbExcel = ThisWorkbook 'hier angeben, in welche Excel-Datei der Inhalt der Textdatei eingefügt werden soll
    Set wsExcel = wbExcel.Sheets(1) 'hier angeben, welches Arbeitsblatt verwendet werden soll
    Set wbText = Workbooks.Open("C:\Test\TestDatei.txt") 'Hier den Pfad Ihrer Textdatei einfügen

    wbText.Sheets(1).Cells.Copy wsExcel.Cells

    wbText.Close SaveChanges:=False

End Sub

Inhalt einer Textdatei zeilenweise oder spaltenweise einlesen

Ihre Textdatei kann mehrere Zeilen und mehrere Elemente enthalten, die in den Zeilen durch Komma, Semikolon, Tabulator, Leerzeichen usw. getrennt sind. Um den Inhalt der Textdatei korrekt zu lesen und einzufügen, benötigen Sie möglicherweise den folgenden Code:

Sub TextdateiInhaltEinfuegen_MitTrennzeichen() 
    Dim StrZeile As String
    Dim FSO As New FileSystemObject
    Dim TSO as Object
    Dim StrZeilenElemente As Variant
    Dim Index As Long
    Dim i As Long
    Dim Trennzeichen as String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set TSO = FSO.OpenTextFile("C:\Test\TestDatei.txt")

    Trennzeichen=", " 'Das Trennzeichen, das in Ihrer Textdatei verwendet wird
    Index = 1

    Do While TSO.AtEndOfStream = False
       StrZeile = TSO.ReadLine
       StrZeilenElemente = Split(StrZeile, Trennzeichen) 
       For i = LBound(StrZeilenElemente) To UBound(StrZeilenElemente)
           Cells(Index, i + 1).Value = StrZeilenElemente(i) 'dieser Code beginnt mit dem Einfügen des Inhalts der Textdatei aus der Zelle A1 (Cell(1,1)) des aktiven Arbeitsblatts
       Next i
       Index = Index + 1
    Loop

TSO.Close

End Sub

Das Trennzeichen, das in Ihrer Textdatei verwendet wird, kann ein Komma („,“), ein Komma mit Leerzeichen („, „), ein Semikolon („;“), ein Semikolon mit Leerzeichen („; „), ein Leerzeichen (“ „), ein Tabulator (setzen Sie dann Trennzeichen = vbTab) oder in seltenen Fällen ein anderes Zeichen sein.

Textdateien in Arrays einlesen

Wenn Sie den Inhalt Ihrer Textdatei in ein Array einlesen und Zeile für Zeile bzw. Spalte für Spalte in Ihr Arbeitsblatt einfügen möchten, benötigen Sie den folgenden Code:

Sub GetrennteTextdateiInArrayEinlesen()
    Dim Trennzeichen As String
    Dim TextDatei As Integer
    Dim DateiPfad As String
    Dim DateiInhalt As String
    Dim ZeilenArray() As String
    Dim DatenArray() As String
    Dim TempArray() As String
    Dim rw As Long, col As Long

    Trennzeichen = vbTab 'Das Trennzeichen, das in Ihrer Textdatei verwendet wird
    DateiPfad = "C:\Test\TestDateiTab.txt"
    rw = 1 
    
    TextDatei = FreeFile
    Open DateiPfad For Input As TextDatei 
    DateiInhalt = Input(LOF(TextDatei), TextDatei)
    TextDatei Close

    ZeilenArray() = Split(DateiInhalt, vbNewLine) 'vbNewLine in vbCrLf oder vbLf ändern, je nachdem, welches Zeilentrennzeichen in Ihrer Textdatei verwendet wird
    For x = LBound(ZeilenArray) To UBound(ZeilenArray)
        If Len(Trim(ZeilenArray(x))) <> 0 Then
           TempArray = Split(ZeilenArray(x), Trennzeichen)
           col = UBound(TempArray)
 	   ReDim Preserve DatenArray(col, rw)
           For y = LBound(TempArray) To UBound(TempArray)
 	       DatenArray(y, rw) = TempArray(y)
 	       Cells(x + 1, y + 1).Value = DatenArray(y, rw) 'dieser Code beginnt mit dem Einfügen des Inhalts der Textdatei aus der Zelle A1 (Cell(1,1)) des aktiven Arbeitsblatts
           Next y
        End If 
        rw = rw + 1
     Next x

End Sub

Zeilentrenner in Ihrer Textdatei können die Kombination aus Wagenrücklauf und Zeilenvorschub (Chr (13) + Chr (10)) oder Zeilenvorschub (Chr (10)) sein. Verwenden Sie entsprechend vbCrLf oder vbLf. Wenn Sie sich nicht sicher sind, verwenden Sie vbNewLine zur Angabe des Zeilentrenners.

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples