Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Textdatei mit mehr als 256 Spalten in Tabelle einlesen

Gruppe

TextImport

Problem

Eine Textdatei mit einer unbekannten, über 256 hinausgehenden Zahl von Spalten soll so eingelesen werden, dass die über 256 Spalten hinausgehenden Felder jeweils 600 Zeilen tiefer angeordnet werden.

Lösung
Den nachstehenden Code in ein Standardmodul eingeben, einer Schaltfläche zuweisen und starten.

StandardModule: Modul1

Sub TextImport()
   Dim arr As Variant
   Dim iRow As Integer, iCol As Integer, iColT As Integer, iPlus As Integer
   Dim sFile As String, sTxt As String
   sFile = ThisWorkbook.Path & "\test_import.txt"
   Close
   Open sFile For Input As #1
   Do Until EOF(1)
      Line Input #1, sTxt
      arr = fncSplit(sTxt, ",")
      For iCol = 0 To UBound(arr)
         iRow = Fix(iCol / 256) * 600 + 1 + iPlus
         iColT = iCol Mod 256 + 1
         Cells(iRow, iColT).Value = arr(iCol)
      Next iCol
      iPlus = iPlus + 1
   Loop
   Close
   MsgBox "Job erledigt!"
End Sub

Function fncSplit( _
   SplitText As String, _
   Delimiter As Variant _
   ) As Variant
   Dim iFile As Integer, iCounter As Integer
   Dim arr() As String
   Dim sTxt As String
   Do While SplitText <> ""
      ReDim Preserve arr(iCounter)
      If InStr(SplitText, Delimiter) Then
         sTxt = Left(SplitText, _
            InStr(SplitText, Delimiter) - 1)
         arr(iCounter) = sTxt
         SplitText = Right(SplitText, Len(SplitText) - _
            InStr(SplitText, Delimiter))
      Else
         arr(iCounter) = SplitText
         SplitText = ""
      End If
      iCounter = iCounter + 1
   Loop
   fncSplit = arr
End Function