Hallo Michael,
ich bin mir nicht sicher, wo die Tabs in jeder Textzeile stehen, deshalb zwei Varianten.
Leider hab ich nur Excel97, so dass ich ich eine etwas elegantere Lösung mit der Split-Methode nicht umsetzen konnte, um die Textteile direkt als Array in eine Varaible einlesen zu können und dann auszuwerten.
Gruß
Franz
Sub textDatei_Einlesen()
'Textfileaufbau:
'File:[Tab]Server1[Tab]Verz.[Tab]C:\absoluter Pfad\zu\Datei[Tab]ms12345;ms1234;ms9876[Tab] _
read[Tab]write
Dim varDateiname, wks As Worksheet, Zeile As Long, varDatensatz
Dim ff As Integer, strText As String, PosTab1 As Integer, PosTab2 As Integer
varDateiname = Application.GetOpenFilename(Filefilter:="Textdateien(*.txt),*.txt", _
Title:="Bitte Textdatei mit Daten auswählen und öffnen!")
If varDateiname = False Then Exit Sub
Set wks = ActiveSheet
ff = FreeFile
Zeile = 1 '1. Zeile mit Dateneintrag
With wks
.Cells(Zeile, 1) = "Server"
.Cells(Zeile, 2) = "Verzeichnis"
.Cells(Zeile, 3) = "User Name"
Open varDateiname For Input As #ff
Do Until EOF(ff)
Zeile = Zeile + 1
Line Input #ff, varDatensatz
'1. Tab suchen
PosTab1 = InStr(1, varDatensatz, vbTab)
'2. Tab suchen
PosTab2 = InStr(PosTab1 + 1, varDatensatz, vbTab)
'Textteil mit Servername
strText = Mid(varDatensatz, PosTab1 + 1, PosTab2 - PosTab1 - 1)
.Cells(Zeile, 1).Value = strText
PosTab1 = PosTab2
'3. Tab suchen
PosTab2 = InStr(PosTab1 + 1, varDatensatz, vbTab)
PosTab1 = PosTab2
'4. Tab suchen
PosTab2 = InStr(PosTab1 + 1, varDatensatz, vbTab)
'Textteil mit Verteichnis
strText = Mid(varDatensatz, PosTab1 + 1, PosTab2 - PosTab1 - 1)
.Cells(Zeile, 2).Value = strText
PosTab1 = PosTab2
'5. Tab suchen
PosTab2 = InStr(PosTab1 + 1, varDatensatz, vbTab)
'Textteil mit Usernamen
strText = Mid(varDatensatz, PosTab1 + 1, PosTab2 - PosTab1 - 1)
Do Until InStr(1, strText, ";") = 0
.Cells(Zeile, 3).Value = Left(strText, InStr(1, strText, ";") - 1)
strText = Mid(strText, InStr(1, strText, ";") + 1)
Zeile = Zeile + 1
Loop
.Cells(Zeile, 3).Value = strText
Loop
Close #ff
End With
End Sub
Sub textDatei_EinlesenVar()
'Variante mit anderer Tab-Position
'Textfileaufbau:
'File: Server1[Tab]Verz. C:\absoluter Pfad\zu\Datei[Tab]ms12345;ms1234;ms9876[Tab]read[Tab] _
write
Dim varDateiname, wks As Worksheet, Zeile As Long, varDatensatz
Dim ff As Integer, strText As String, PosTab1 As Integer, PosTab2 As Integer
varDateiname = Application.GetOpenFilename(Filefilter:="Textdateien(*.txt),*.txt", _
Title:="Bitte Textdatei mit Daten auswählen und öffnen!")
If varDateiname = False Then Exit Sub
Set wks = ActiveSheet
ff = FreeFile
Zeile = 1 '1. Zeile mit Dateneintrag
With wks
.Cells(Zeile, 1) = "Server"
.Cells(Zeile, 2) = "Verzeichnis"
.Cells(Zeile, 3) = "User Name"
Open varDateiname For Input As #ff
Do Until EOF(ff)
Zeile = Zeile + 1
Line Input #ff, varDatensatz
'1. Tab suchen
PosTab1 = InStr(1, varDatensatz, vbTab)
'Textteil mit Servername
strText = Mid(varDatensatz, 7, PosTab1 - 7)
.Cells(Zeile, 1).Value = strText
'2. Tab suchen
PosTab2 = InStr(PosTab1 + 1, varDatensatz, vbTab)
'Textteil mit Verteichnis
strText = Mid(varDatensatz, PosTab1 + 7, PosTab2 - PosTab1 - 7)
.Cells(Zeile, 2).Value = strText
PosTab1 = PosTab2
'3. Tab suchen
PosTab2 = InStr(PosTab1 + 1, varDatensatz, vbTab)
'Textteil mit Usernamen
strText = Mid(varDatensatz, PosTab1 + 1, PosTab2 - PosTab1 - 1)
Do Until InStr(1, strText, ";") = 0
.Cells(Zeile, 3).Value = Left(strText, InStr(1, strText, ";") - 1)
strText = Mid(strText, InStr(1, strText, ";") + 1)
Zeile = Zeile + 1
Loop
.Cells(Zeile, 3).Value = strText
Loop
Close #ff
End With
End Sub