Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel VBA: mehrere txt-Dateien importieren, Zeilenumbruch als Trennzeichen

Frage Microsoft Microsoft Office

Mitglied: jojojo

jojojo (Level 1) - Jetzt verbinden

09.06.2014, aktualisiert 16:13 Uhr, 7537 Aufrufe, 11 Kommentare

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:

01.
Sub txtimport() 
02.
    x = Sheets(1).UsedRange.Rows.Count 
03.
    d = Dir("C:\Zielordner\*.txt") 
04.
     
05.
    Do While d <> "" 
06.
        Open "C:\Zielordner\" & d For Input As #1 
07.
            Do While Not EOF(1) 
08.
                Line Input #1, temp 
09.
                Sheets(1).Cells(x, 1) = Replace(temp, vbTab, ";") 
10.
                x = x + 1 
11.
            Loop 
12.
        Close #1 
13.
         
14.
        For j = 1 To x 
15.
            Text = Split(Cells(j, 1), ";") 
16.
            For i = 0 To UBound(Text) 
17.
                Cells(j, i + 1) = Text(i) 
18.
            Next 
19.
        Next 
20.
         
21.
        d = Dir 
22.
    Loop 
23.
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
Mitglied: bastla
LÖSUNG 09.06.2014, aktualisiert um 16:13 Uhr
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:
01.
Sub txtimport() 
02.
    x = Sheets(1).UsedRange.Rows.Count 
03.
    d = Dir("C:\Zielordner\*.txt") 
04.
    Set fso = CreateObject("Scripting.FileSystemObject") 
05.
    Do While d <> "" 
06.
        T = Split(fso.OpenTextFile("C:\Zielordner\" & d).ReadAll, vbNewline) 
07.
        Sheets(1).Cells(x, 1).Resize(1, UBound(T) + 1).Value = T 
08.
        x = x + 1 
09.
        d = Dir 
10.
    Loop 
11.
End Sub
Grüße
bastla

[Edit] Zeile 4 ergänzt [/Edit]
Bitte warten ..
Mitglied: jojojo
09.06.2014, aktualisiert um 15:57 Uhr
Hallo bastla,

erst einmal vielen Dank!
Ich bekomme einen Laufzeitfehler '424' bzw. Objekt erforderlich für Zeile 6 (T = Split...)

VG

EDIT: Ja. Genau so, wie du es oben formuliert hast, ist es vielleicht deutlicher.
Bitte warten ..
Mitglied: bastla
LÖSUNG 09.06.2014, aktualisiert um 16:13 Uhr
Hallo jojojo!

Der Fehler wundert micht nicht - ich habe ja auch die Zeile 4
Set fso = CreateObject("Scripting.FileSystemObject")
unterschlagen ...

Ich trage das auch oben nach.

Grüße
bastla
Bitte warten ..
Mitglied: jojojo
09.06.2014 um 16:13 Uhr
Super. Vielen Dank! Das funktioniert....
Bitte warten ..
Mitglied: radihk
16.12.2015 um 10:58 Uhr
Hallo zusammen!

genau das gleiche Problem habe ich auch! Allerdings wenn ich den Code einfüge spuckt er mir die Fehlermeldung "Pfad nicht gefunden aus".
Ich kann mit dieser Fehlermeldung leider nichts anfangen. Wäre super wenn einer von euch einen Rat hätte!!
Bitte warten ..
Mitglied: bastla
16.12.2015 um 14:42 Uhr
Hallo radihk und willkommen im Forum!
Wäre super wenn einer von euch einen Rat hätte!!
Das wird vermutlich dauern - schließlich müssen wir uns durch die Unmenge an Informationen, die Du geliefert hast, durcharbeiten ...

Grüße
bastla
Bitte warten ..
Mitglied: radihk
16.12.2015 um 15:25 Uhr
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!
Bitte warten ..
Mitglied: bastla
16.12.2015 um 15:38 Uhr
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
Bitte warten ..
Mitglied: radihk
16.12.2015 um 15:49 Uhr
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.
Bitte warten ..
Mitglied: radihk
17.12.2015 um 09:22 Uhr
Hat wirklich niemand ne Idee wie man das umsetzen könnte?
Bin für jede Hilfe dankbar!
Bitte warten ..
Mitglied: radihk
17.12.2015 um 11:57 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Excel VBA "SVERWEIS" über mehrere Dateien in Ordner (2)

Frage von Acht85 zum Thema Microsoft Office ...

Microsoft Office
gelöst Txt Dateien in Excel importieren (9)

Frage von Serbitar zum Thema Microsoft Office ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

VB for Applications
gelöst Mehrere CSV Dateien aus verschiedenen Ordner einlesen via VBA (12)

Frage von mtufangil zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...