Excel VBA: mehrere txt-Dateien importieren, Zeilenumbruch als Trennzeichen
Hallo zusammen.
seit ein paar Tagen versuche ich vergeblich (weil ich praktisch keine Ahnung von Makros bzw. VBA habe) eine Lösung für folgendes Problem zu finden:
Der Inhalt verschiedener txt-Dokumente (verschiedene Dateinamen, keine logische Reihenfolge) muss in eine Excel-Tabelle importiert werden.
Die txts befinden sich alle in dem gleichen Ordner.
Eine txt-Datei sieht wie folgt aus (Bsp.-Datensatz A):
12345
789
Ja
...(noch mehr Zahlen oder kurzer Text)
-321
8472032
Text mit vielen Zeichen und noch mehr Zeichen; und noch mehr.
noch ein Textabschnitt mit blabla
Bis auf die Zeilenumbrüche sind keine Trennzeichen vorhanden.
Die Dateien sollen so importiert werden, dass je eine Zeile aus der txt Datei in einer anderen Spalte steht:
Bsp:
A | 12345 | 789 | Ja | ... | -321 | ... | Text mit vielen Zeichen und noch mehr Zeichen, und noch mehr. | ...
B | ...
Im Netzt habe ich das hier gefunden:
Ein Import erfolgt, allerdings werden einfach alle Zeilen der txts untereinander abgedruckt, was mir nicht weiterhilft.
Am umformulieren, sodass die Daten vernünftig abgedruckt werden (siehe Tabelle oben), bin ich bisher gescheidert...
Wenn mir jemand helfen könnte, wäre ich sehr sehr dankbar.
VG
seit ein paar Tagen versuche ich vergeblich (weil ich praktisch keine Ahnung von Makros bzw. VBA habe) eine Lösung für folgendes Problem zu finden:
Der Inhalt verschiedener txt-Dokumente (verschiedene Dateinamen, keine logische Reihenfolge) muss in eine Excel-Tabelle importiert werden.
Die txts befinden sich alle in dem gleichen Ordner.
Eine txt-Datei sieht wie folgt aus (Bsp.-Datensatz A):
12345
789
Ja
...(noch mehr Zahlen oder kurzer Text)
-321
8472032
Text mit vielen Zeichen und noch mehr Zeichen; und noch mehr.
noch ein Textabschnitt mit blabla
Bis auf die Zeilenumbrüche sind keine Trennzeichen vorhanden.
Die Dateien sollen so importiert werden, dass je eine Zeile aus der txt Datei in einer anderen Spalte steht:
Bsp:
A | 12345 | 789 | Ja | ... | -321 | ... | Text mit vielen Zeichen und noch mehr Zeichen, und noch mehr. | ...
B | ...
Im Netzt habe ich das hier gefunden:
Sub txtimport()
x = Sheets(1).UsedRange.Rows.Count
d = Dir("C:\Zielordner\*.txt")
Do While d <> ""
Open "C:\Zielordner\" & d For Input As #1
Do While Not EOF(1)
Line Input #1, temp
Sheets(1).Cells(x, 1) = Replace(temp, vbTab, ";")
x = x + 1
Loop
Close #1
For j = 1 To x
Text = Split(Cells(j, 1), ";")
For i = 0 To UBound(Text)
Cells(j, i + 1) = Text(i)
Next
Next
d = Dir
Loop
End Sub
Ein Import erfolgt, allerdings werden einfach alle Zeilen der txts untereinander abgedruckt, was mir nicht weiterhilft.
Am umformulieren, sodass die Daten vernünftig abgedruckt werden (siehe Tabelle oben), bin ich bisher gescheidert...
Wenn mir jemand helfen könnte, wäre ich sehr sehr dankbar.
VG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 240439
Url: https://administrator.de/contentid/240439
Ausgedruckt am: 19.11.2024 um 15:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo jojojo und willkommen im Forum!
Soferne ich Deine Problemstellung richtig verstehe (ich würde sie umformulieren auf: Importiere den gesamten Inhalt jeder Textdatei in jeweils eine Zeile, wobei die Zeilen der Textdatei auf einzelne Spalten verteilt werden sollen.), könnte das (ungetestet) so gehen:
Grüße
bastla
[Edit] Zeile 4 ergänzt [/Edit]
Soferne ich Deine Problemstellung richtig verstehe (ich würde sie umformulieren auf: Importiere den gesamten Inhalt jeder Textdatei in jeweils eine Zeile, wobei die Zeilen der Textdatei auf einzelne Spalten verteilt werden sollen.), könnte das (ungetestet) so gehen:
Sub txtimport()
x = Sheets(1).UsedRange.Rows.Count
d = Dir("C:\Zielordner\*.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Do While d <> ""
T = Split(fso.OpenTextFile("C:\Zielordner\" & d).ReadAll, vbNewline)
Sheets(1).Cells(x, 1).Resize(1, UBound(T) + 1).Value = T
x = x + 1
d = Dir
Loop
End Sub
bastla
[Edit] Zeile 4 ergänzt [/Edit]
Sorry x)
Ich möchte eine .txt Datein in Excel importieren. Die .txt ist eine Speisekarte die wie folgt aussieht:
Pizza Salami 5,90€
Pizza mit Tomatensauce, etc.
Nun möchte ich diese so in excel importieren, dass folgendes dabei herauskommt:
Pizza Salami | Pizza mit Tomatensauce | 5,90€
Ich habe es bereits mit eiener =WENN-Formel probiert und das klappt soweit auch allerdings kopiert diese Methode lediglich die"Beschreibung der Pizza" und das bringt mich überhauptnicht weiter..
Schon einmal vielen Dank!
Ich möchte eine .txt Datein in Excel importieren. Die .txt ist eine Speisekarte die wie folgt aussieht:
Pizza Salami 5,90€
Pizza mit Tomatensauce, etc.
Nun möchte ich diese so in excel importieren, dass folgendes dabei herauskommt:
Pizza Salami | Pizza mit Tomatensauce | 5,90€
Ich habe es bereits mit eiener =WENN-Formel probiert und das klappt soweit auch allerdings kopiert diese Methode lediglich die"Beschreibung der Pizza" und das bringt mich überhauptnicht weiter..
Schon einmal vielen Dank!
Hallo radihk!
Viel klarer ist es damit nicht - Du könntest aber eine (als "Code" formatierte) Beispieldatei posten ...
Willst Du (wie es Dein Beispiel vermuten ließe) die Reihenfolge der Felder verändern (wäre im Script nämlich nicht vorgesehen)?
Grüße
bastla
Viel klarer ist es damit nicht - Du könntest aber eine (als "Code" formatierte) Beispieldatei posten ...
Willst Du (wie es Dein Beispiel vermuten ließe) die Reihenfolge der Felder verändern (wäre im Script nämlich nicht vorgesehen)?
Grüße
bastla
In spalte A1: Pizza Salami
In spalte B2: mit Tomatensauce, Käse, etc.
In spalte C1: 4,90€
So sollte es im Idealfall aussehen.
Nach dem import aus der .txt sieht es aber erst einmal so aus:
Spalte A1: Pizza Salami
Spalte A2: mit Tomatensauce, Käse, etc.
Spalte B1: 4,90€
Sub eins()
Dim Start As Integer
Start = 2
Range(Cells(1, Start), Cells(1, Start + 0)).EntireColumn.Insert
End Sub
--> damit erstelle ich eine neue Spalte und jetzt muss nur noch die "Beschreibung" in diese eingefügt werden.
In spalte B2: mit Tomatensauce, Käse, etc.
In spalte C1: 4,90€
So sollte es im Idealfall aussehen.
Nach dem import aus der .txt sieht es aber erst einmal so aus:
Spalte A1: Pizza Salami
Spalte A2: mit Tomatensauce, Käse, etc.
Spalte B1: 4,90€
Sub eins()
Dim Start As Integer
Start = 2
Range(Cells(1, Start), Cells(1, Start + 0)).EntireColumn.Insert
End Sub
--> damit erstelle ich eine neue Spalte und jetzt muss nur noch die "Beschreibung" in diese eingefügt werden.
Ich hab das jetzt mit folgendem Makro hinbekommen. Jetzt müsste das ganze nur noch in einer Schleife durchlaufen.
Jemand einen Rat?
Sub CellsCut()
'Preis
With Range("B1")
.Copy Destination:=Range("C1")
End With
Range("C1").ClearFormats
'Beschreibung
With Range("A2")
.Copy Destination:=Range("B1")
.Value = ""
End With
Range("B1").ClearFormats
'Nächste Zeile
With Range("A3")
.Copy Destination:=Range("A2")
.Value = ""
End With
Range("A2").ClearFormats
'Preis
With Range("B3")
.Copy Destination:=Range("C2")
.Value = ""
End With
Range("C2").ClearFormats
'Beschreibung
With Range("A4")
.Copy Destination:=Range("B2")
.Value = ""
End With
Range("B2").ClearFormats
End Sub
Jemand einen Rat?
Sub CellsCut()
'Preis
With Range("B1")
.Copy Destination:=Range("C1")
End With
Range("C1").ClearFormats
'Beschreibung
With Range("A2")
.Copy Destination:=Range("B1")
.Value = ""
End With
Range("B1").ClearFormats
'Nächste Zeile
With Range("A3")
.Copy Destination:=Range("A2")
.Value = ""
End With
Range("A2").ClearFormats
'Preis
With Range("B3")
.Copy Destination:=Range("C2")
.Value = ""
End With
Range("C2").ClearFormats
'Beschreibung
With Range("A4")
.Copy Destination:=Range("B2")
.Value = ""
End With
Range("B2").ClearFormats
End Sub