Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Import von TXT Datei

Import von TXT Datei
06.02.2008 09:10:00
TXT
Hallo Zusammen,
habe folgendes Problem, ich möchte eine TXT Datei, die sehr viele Zeilen beinhaltet per Excel über VBA einlesen. Dies ist mir soweit auch ganz gut mit einer Makro aufzeichnung gelungen, jedoch möchte ich 1. ein Fenster bekommen, wo ich die Datei angegeben kann (wie beim "händischen" Import) 2. Sollen nur bestimmte werte jeder Zeile importiert und auch in entsprechende Zeilen geschrieben werden. Die Textdatei hat folgenden Aufbau:
File: Server1 Verz. C:\absoluter Pfad\zu\Datei ms12345;ms1234;ms9876 read write
File: Server2 Verz. C:\absoluter Pfad\zu\Datei ms12345;ms1234 read;read write
Es sollen nur der Server (Server1, Server2, usw.)in Spalte A, das Verz. in Spalte B und die Benutzernamen in Spalte C, in Excel übernommen werden, jedoch sollen die Benutzernamen nicht durch Semikolon getrennt sein sondern untereinander in der Spalte C stehen. Alle einzelnen Abschnitte sind durch Tab getrennt und wie Ihr gut sehen könnt nicht immer gleichlang. Dies habe ich leider nicht hinbekommen und weiß auch nicht wie ich diese Daten anspreche usw. In Die Excel Datei soll dann folgenden Aufbau haben:
SpalteA SpalteB SpalteC
Server1 Verz. ms12345 (soll in Spalte C stehen)
ms1234 (soll in Spalte C stehen)
ms9876 (soll in Spalte C stehen)
Server2 Verz. ms12345 (soll in Spalte C stehen)
ms1234 (soll in Spalte C stehen)
Ich hoffe das mir hier jemand Helfen kann
Vielen Dank im Voraus
Gruß Michael
P.S. Leider kann man den gewünschten Aufbau der Datei nur schlecht erkennen, aber ich hoffe Ihr könnte mir da folgen :-)

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import von TXT Datei
06.02.2008 11:18:00
TXT
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


Anzeige
AW: Import von TXT Datei
06.02.2008 11:27:00
TXT
Hi Franz,
Problem gelöst, Variante1 funzt einwandfrei bei mir
Vielen Dank

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige