AW: Datenimport txt / csv Datei mit mehr als 65536 Zei
07.06.2005 07:33:33
Sylvio
Hallo Knott,
ich nehm mal an du hattest das in die Richtung gemeint.
Sub Multi_Text_Import()
'by Josef Ehrensberger
Dim n As Integer
Dim strTemp As String
Dim lRow As Long, i As Long
Dim wks As Worksheet
lRow = 1 'Startzeile in der Tabelle
Set wks = ActiveSheet
With Application.FileSearch
.LookIn = "D:\Office\Excel\Text" 'Pfad zu deinen Textdateien
.FileType = msoFileTypeAllFiles
.Filename = "*.txt"
.SearchSubFolders = False
'(True) wenn auch Unterordner durchsucht werden sollen
.Execute
For n = 1 To .FoundFiles.Count
'Import Textfile
Open .FoundFiles(n) For Input As #1
Do While Not EOF(1)
Input #1, strTemp
Hier musst du einsetzen: strTemp ist deine ganze Zeile in der TXT-datei
sieht zu Beispiel so aus Zeile1: hallo,weiter,Name, etc.
diesen string musst du jetzt durchlaufen und nach deinem Kriterium durch suchen
ala:
wert =strTemp
Do While InStr(Wert, ",") <> 0
Wert = Left(Wert, Len(Wert) - InStr(Wert, ","))
wks.Cells(lRow,a) = Wert
a=a+1
loop
versuch das mal in deinen Txt einzubauen
anstelle von: wks.Cells(lRow, 1) = strTemp
ich hab das jetzt nicht durchtesten können aber so oder ähnlich müsste es aussehen.
lRow = lRow + 1
Application.StatusBar = lRow
If lRow = 65536 Then
i = i + lRow - 1
wks.Name = i
wks.Columns("A:A").TextToColumns Destination:=wks.Range("A1"),
_
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, F
ieldInfo _
:=Array(Array(1, 1))
wks.Columns.AutoFit
Set wks = Sheets.Add(after:=wks)
lRow = 1
End If
Loop
Close #1
Next
End With
i = i + lRow - 1
wks.Name = i
wks.Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDeli
mited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1))
wks.Columns.AutoFit
Application.StatusBar = False
End
Sub
Gruß Sylvio