Fragen zum Importieren von Textdateien in Excel - 2. Versuch

28/11/2007 - 13:58 von SpEzIaLApparat | Report spam
Hallo zusammen,

ich, ein VBA-Newbie, habe ein Problem und hoffe ihr könnt mir
weiterhelfen.

Ich habe ein Verzeichnis, in dem div. Textdateien liegen. Diese
Textdatein sollen in Excel importiert werden.
Eine andere Excel-Datei greift dann auf diese Importieren Datein zu,
und aktualisiert die Werte der Zellbezüge.

Abgehakte Themen:

- Einlesen der aller Dateinamen des Verzeichnisses
- Importieren mittels Workbooks.OpenText()

Und jetzt setzt mein Problem ein. Ich möchte gerne das Textfile auf
eine bestimmte Zeichenfolge durchsuchen, um zu ermitteln in welcher
Zeile der Import losgehen soll. Würde also gerne den StartRow-Wert
nicht Fix eintragen, sondern über eine Variable lösen.

Kann man zum Bsp. auch realisieren, alle Textfiles in eine Exceldatei
zu importieren und zwar jedes File auf ein anderes Tabellenblatt?

Im Anschluss soll die Datei dann als eingenstàndige XLS Datei
abgespeichert werden.

Geht das Überhaupt, so wie ich mir das vorstelle?

PS: Ich bin schon seit einer Woche am experimentieren und sehe
Wahrscheinlich auch den Wald vor lauter Bàumen nicht.

Vielen Dank schonmal.

Andreas Frey
 

Lesen sie die antworten

#1 stefan onken
28/11/2007 - 15:27 | Warnen spam
On 28 Nov., 13:58, wrote:
Hallo zusammen,

ich, ein VBA-Newbie, habe ein Problem und hoffe ihr könnt mir
weiterhelfen.

Ich habe ein Verzeichnis, in dem div. Textdateien liegen. Diese
Textdatein sollen in Excel importiert werden.
Eine andere Excel-Datei greift dann auf diese Importieren Datein zu,
und aktualisiert die Werte der Zellbezüge.

Abgehakte Themen:

- Einlesen der aller Dateinamen des Verzeichnisses
- Importieren mittels Workbooks.OpenText()

Und jetzt setzt mein Problem ein. Ich möchte gerne das Textfile auf
eine bestimmte Zeichenfolge durchsuchen, um zu ermitteln in welcher
Zeile der Import losgehen soll. Würde also gerne den StartRow-Wert
nicht Fix eintragen, sondern über eine Variable lösen.

Kann man zum Bsp. auch realisieren, alle Textfiles in eine Exceldatei
zu importieren und zwar jedes File auf ein anderes Tabellenblatt?

Im Anschluss soll die Datei dann als eingenstàndige XLS Datei
abgespeichert werden.

Geht das Überhaupt, so wie ich mir das vorstelle?

PS: Ich bin schon seit einer Woche am experimentieren und sehe
Wahrscheinlich auch den Wald vor lauter Bàumen nicht.

Vielen Dank schonmal.

Andreas Frey



hallo Andreas,
es gibt im Prinzip 2 Möglichkeiten:
du öffnest die Textdateien mit OpenText, suchst in der geöffneten
Datei mittels Find nach dem Suchbegriff und löscht alle Zeilen von 1
bis zur gefundenen Zeile, erstellst im "Sammelworkbook" eine neue
Tabelle, kopierst den Inhalt der Textdatei dort hinein und schließt
die Textdatei, Codebsp:

pfad = "d:\test\test\"
Dateiname = Dir$(pfad & "*.txt")
Do While Dateiname <> ""
Workbooks.OpenText Filename:=pfad & Dateiname 'weitere Einstellungen

Set suche = Cells.Find("abc") 'Suchbegriff
If Not suche Is Nothing Then Rows("1:" & suche.Row - 1).Delete
Set sh = ThisWorkbook.Worksheets.Add
sh.Name = ActiveSheet.Name
ActiveSheet.UsedRange.Copy Destination:=sh.Range("A1")
ActiveWorkbook.Close False
Dateiname = Dir$()
Loop

2. du öffnest die Textdateien mit der Open-Anweisung, liest die Datei
zeilenweise ein, prüfst mittels InStr, ob der Suchbegriff vorhanden
ist und liest die Zeile dann direkt in das Sammelworkbook ein (also
ohne Umweg über die in Excel geöffnete 2. Datei).

Dim NachXLÜbertragen As Boolean
pfad = "d:\test\test\"
Dateiname = Dir$(pfad & "*.txt")
Do While Dateiname <> ""
Worksheets.Add
ActiveSheet.Name = Dateiname
i = 0
NachXLÜbertragen = False
Open pfad & Dateiname For Input As #1
Do Until EOF(1)
Line Input #1, aktzeile
If InStr(aktzeile, "abc") > 0 Then NachXLÜbertragen = True
If NachXLÜbertragen Then
i = i + 1
Range("A" & i) = aktzeile
End If
Loop
Close #1
Dateiname = Dir$()
Loop

Wenn du nun bei OpenText die StartRow ermitteln möchtest, müsstest du
mittels 2. Variante die Datei öffnen, den Suchbegriff suchen (dazu
muss ggfls die gesamte Datei zeilenweise eingelesen werden), um die
Datei dann mit OpenText nochmal zu öffnen. Das macht mE keinen Sinn.
Du solltest dir eine der beiden Varianten heraussuchen.

Gruß
stefan

Ähnliche fragen