Top-Themen

Aktuelle Themen (A bis Z)

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

VBA - erste Zeilen aus mehreren .txt Dateien in Excel importieren

Frage Entwicklung VB for Applications

Mitglied: berndk

berndk (Level 1) - Jetzt verbinden

06.11.2012, aktualisiert 07.11.2012, 4384 Aufrufe, 11 Kommentare

Hallo beisammen,

bin kurz vor dem verzweifeln und benötige Hilfe.
ich möchte aus vielen .txt - Dateien nur die ersten 20 Zeilen in Excel importieren.
Es handelt sich um Messdaten die wie folgt in der .txt Dateien hinterlegt sind:

Run Label: Bernd-20121022-082146
Run Time: 22-Okt-2012 08:21
Device Serial: 45353763739
Method: Wurschd
Barr: Wurschd
Ba ID: 7777432
ID: 8834666


Result: Pass

User Name: Bernd
Login Time: 22-Okt-2012 08:20
Software Version: 4.88.42 (6697)
Last Tested: 22-Okt-2012 08:16
Last Test Result: Pass
Calibration Check: Pass
CCD Check: Pass
Laser Power: Pass
Warnings: None

samplespec 33 [response corrected]
-22915695 24.518190
-884929 24.202
-869773 24.3041
......
......
......
Folgendes Scripte habe ich schon soweit und funktioniert auch soweit.
Jedoch sollte die Zeile "Warnings: None" die letzte Zeile sein die immer eingelesen wird.

Wäre über Eure Hilfe dankbar.

Code:

01.
Sub Alle_txt_Dateien_importiern() 
02.
 
03.
    Dim strFile$ 
04.
    Const strPfad$ = "C:\Testordner\" 
05.
    strFile = Dir(strPfad & "*Messdaten*.txt", vbNormal) 
06.
    Do Until Len(strFile) = 0 
07.
        With ActiveSheet 
08.
            .Cells(.Rows.Count, 2).End(xlUp).Offset(1, -1) = strFile 
09.
            With .QueryTables.Add(Connection:="TEXT;" & strPfad & strFile, _ 
10.
                Destination:=.Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0)) 
11.
                .AdjustColumnWidth = True 
12.
                .TextFileParseType = xlDelimited 
13.
                .TextFileSpaceDelimiter = False          'Leerzeichen 
14.
                .TextFileCommaDelimiter = True           'Komma 
15.
                .Refresh BackgroundQuery:=False 
16.
            End With 
17.
        End With 
18.
        strFile = Dir$ 
19.
    Loop 
20.
     
21.
 
22.
End Sub
Viele Grüße und im Voraus vielen Dank!

Bernd

Mitglied: bastla
06.11.2012 um 20:02 Uhr
Hallo berndk!

Ich würde das etwas anders schreiben:
01.
Sub Alle_txt_Dateien_importiern() 
02.
 
03.
Const strPfad$ = "C:\Testordner\" 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
strFile = Dir(strPfad & "*Messdaten*.txt", vbNormal) 
06.
 
07.
Rw = Cells(Rows.Count, 2).End(xlUp).Row 
08.
Do Until Len(strFile) = 0 
09.
    Cells(Rw, "A").Value = strFile 
10.
    For Each Line In Split(fso.OpenTextFile(strPfad & strFile).ReadAll, vbNewLine) 
11.
        Cells(Rw, "B") = Line 
12.
        Rw = Rw + 1 
13.
        If InStr(Line, "Warnings: None") > 0 Then Exit For 
14.
    Next 
15.
    Rw = Rw + 1 'Zeilenabstand nach Datei 
16.
    strFile = Dir$ 
17.
Loop 
18.
Columns("A:B").AutoFit 
19.
End Sub
Grüße
bastla

P.S.: Die Formatierung als "Code" lässt sich auch nachträglich noch vornehmen ...
Bitte warten ..
Mitglied: berndk
06.11.2012, aktualisiert um 20:25 Uhr
Hallo Bastla,

vielen Dank!

Ich habs jetzt eben ausprobiert, ich bin absolut nicht der Held in VBA, aber er mit diesem Script listet er mir nur die Namen der bestehenden .txt - Dateien auf.
Ich möchte aber aus dem Inhalt die ca. ersten 20 Zeilen auslesen.
Mhhh, wie bastel ich denn das Script am besten dann so um?

Viele Grüße

Bernd


Sorry, muss noch was hinzufügen, in der Spalte "B" habe ich den Code "ÿþR" stehen.
Wo kann ich denn diesen Formatieren?

Ah, ja, und danke noch für den Tip mit dem Code
Werds das nächste mal besser machen
Bitte warten ..
Mitglied: bastla
06.11.2012 um 20:27 Uhr
Hallo berndk!

Ich habe mit Deinem oben geposteten Beispiel
01.
Run Label: Bernd-20121022-082146 
02.
Run Time: 22-Okt-2012 08:21 
03.
Device Serial: 45353763739 
04.
Method: Wurschd 
05.
Barr: Wurschd 
06.
Ba ID: 7777432 
07.
ID: 8834666 
08.
 
09.
 
10.
Result: Pass 
11.
 
12.
User Name: Bernd 
13.
Login Time: 22-Okt-2012 08:20 
14.
Software Version: 4.88.42 (6697) 
15.
Last Tested: 22-Okt-2012 08:16 
16.
Last Test Result: Pass 
17.
Calibration Check: Pass 
18.
CCD Check: Pass 
19.
Laser Power: Pass 
20.
Warnings: None 
21.
 
22.
samplespec 33 [response corrected] 
23.
-22915695 24.518190 
24.
-884929 24.202 
25.
-869773 24.3041 
26.
...... 
27.
...... 
28.
......
(als "Messdaten1.txt" gespeichert) getestet und als Ergebnis
01.
Messdaten1.txt	Run Label: Bernd-20121022-082146 
02.
	Run Time: 22-Okt-2012 08:21 
03.
	Device Serial: 45353763739 
04.
	Method: Wurschd 
05.
	Barr: Wurschd 
06.
	Ba ID: 7777432 
07.
	ID: 8834666 
08.
	 
09.
	 
10.
	Result: Pass 
11.
	 
12.
	User Name: Bernd 
13.
	Login Time: 22-Okt-2012 08:20 
14.
	Software Version: 4.88.42 (6697) 
15.
	Last Tested: 22-Okt-2012 08:16 
16.
	Last Test Result: Pass 
17.
	Calibration Check: Pass 
18.
	CCD Check: Pass 
19.
	Laser Power: Pass 
20.
	Warnings: None
erhalten - versuch das doch bitte auch und vergleiche dann bitte eine Deiner Dateien mit der Testdatei, um die Ursache dafür, dass es bei Dir nicht funktioniert, zu finden ...

Grüße
bastla
Bitte warten ..
Mitglied: berndk
06.11.2012 um 20:35 Uhr
Hi Bastla,
das versteh ich jetzt nicht, ich habe es so ausprobiert und es funktioniert prima dein Script.
Wenn ich jedoch die ursprüngliche .txt -Dateien importieren möchte, dann listet er mir nur die Bezeichnungen auf und in der Spalte "B" dann die Kryptische Zeichen: ÿþR

Die ursprünglichen .txt-Dateien sind ziemlich lang und haben ca. 4000 Zeilen, daher benötige ich nur die ca. oberen 20.

Hast du mir nen Tip?

Grüße

Bernd
Bitte warten ..
Mitglied: bastla
06.11.2012 um 20:41 Uhr
Hallo berndk!

Falls es sich um Unicode-Dateien handeln sollte, müsste die Zeile 10 geändert werden:
    For Each Line In Split(fso.OpenTextFile(strPfad & strFile, 1, False, True).ReadAll, vbNewLine)
Grüße
bastla
Bitte warten ..
Mitglied: berndk
06.11.2012 um 20:57 Uhr
Bastla,

Vielen Dank!! Erst hatte es funktioniert, jetzt bekomme ich folgende Fehlermeldung:
"Laufzeitfehler '62', Einlesen hinter Dateiende".
Diese Fehlemeldung hatte ich schon mal bei einem anderen Script und habe mich wund gegoogelt.
Sagt dir diese Meldung was?

Grüße

Bernd
Bitte warten ..
Mitglied: bastla
06.11.2012, aktualisiert um 21:44 Uhr
Hallo berndk!

Im Hinblick darauf, dass per "ReadAll" ja eigentlich einfach der gesamte Dateiinhalt gelesen wird, dürfte der Fehler eigentlich nur bei einer leeren Textdatei auftreten ...

Falls das die Ursache war, sollte es so funktionieren:
01.
Sub Alle_txt_Dateien_importiern() 
02.
 
03.
Const strPfad$ = "C:\Testordner\" 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
strFile = Dir(strPfad & "*Messdaten*.txt", vbNormal) 
06.
 
07.
Rw = Cells(Rows.Count, 2).End(xlUp).Row 
08.
Do Until Len(strFile) = 0 
09.
    Cells(Rw, "A").Value = strFile 
10.
    Set FileIn = fso.OpenTextFile(strPfad & strFile, 1, False, True) 
11.
    If Not FileIn.AtEndOfStream Then 
12.
        For Each Line In Split(FileIn.ReadAll, vbNewLine) 
13.
            Cells(Rw, "B") = Line 
14.
            Rw = Rw + 1 
15.
            If InStr(Line, "Warnings: None") > 0 Then Exit For 
16.
        Next 
17.
    End If 
18.
    Rw = Rw + 1 'Zeilenabstand nach Datei 
19.
    FileIn.Close 
20.
    strFile = Dir$ 
21.
Loop 
22.
Columns("A:B").AutoFit 
23.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: berndk
07.11.2012 um 08:23 Uhr
Guten Morgen bastla,

du bist der Beste!
Vielen Dank, ja, das wars.
Warum auch immer, aber eine .txt-Datei war komplett leer und hatte dann den Fehler ausgelöst.

Morgen werde ich dann probieren dass ich die Zeilen noch getrennt bekomme (TabStops) und dann sollte es passen.

Herzlichen Dank noch!!

Viele Grüße

Bernd
Bitte warten ..
Mitglied: berndk
07.11.2012 um 13:34 Uhr
Hallo bastla,

noch eine Frage, ich krieg das irgendwie nicht gebacken mit der Trennung.
Wie verbastel ich denn jetzt meine Tabstops getrennt etc... in das Script damit er mir die Daten getrennt in die Spalten schreibt?

01.
... 
02.
Destination:=.Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0)) 
03.
                .AdjustColumnWidth = True 
04.
                .TextFileParseType = xlDelimited 
05.
                .TextFileSpaceDelimiter = False          'Leerzeichen 
06.
                .TextFileCommaDelimiter = True           'Komma 
07.
                .Refresh BackgroundQuery:=False 
08.
...
Soll ja dann so aussehen:
01.
Spalte1 Spalte2  
02.
Method: Wurschd 
03.
... 
04.
....
Vielen Dank schon mal für die Antwort.

Grüße

Bernd
Bitte warten ..
Mitglied: bastla
07.11.2012 um 16:28 Uhr
Hallo berndk!

Versuch es damit:
01.
Sub Alle_txt_Dateien_importiern() 
02.
 
03.
Const strPfad$ = "C:\Testordner\" 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
strFile = Dir(strPfad & "*Messdaten*.txt", vbNormal) 
06.
 
07.
FieldsMax = 0 
08.
Rw = Cells(Rows.Count, 2).End(xlUp).Row 
09.
Do Until Len(strFile) = 0 
10.
    Cells(Rw, "A").Value = strFile 
11.
    Set FileIn = fso.OpenTextFile(strPfad & strFile) 
12.
    If Not FileIn.AtEndOfStream Then 
13.
        For Each Line In Split(FileIn.ReadAll, vbNewLine) 
14.
            Fields = Split(Line, vbTab) 'anhand TAB in Felder zerlegen 
15.
            FieldsCount = UBound(Fields) + 1 'Feldanzahl ermitteln 
16.
            If FieldsCount < 1 Then FieldsCount = 1 'bei leeren Zeilen Feldanzahl auf 1 setzen 
17.
            If FieldsCount > FieldsMax Then FieldsMax = FieldsCount 'höchste Feldanzahl speichern (für AutoFit) 
18.
            Cells(Rw, "B").Resize(1, FieldsCount).Value = Fields 
19.
            Rw = Rw + 1 
20.
            If InStr(Line, "Warnings: None") > 0 Then Exit For 
21.
        Next 
22.
        Rw = Rw + 1 'Zeilenabstand nach Datei 
23.
    End If 
24.
    FileIn.Close 
25.
    strFile = Dir$ 
26.
Loop 
27.
Columns("A").Resize(, FieldsMax + 1).AutoFit 'alle Spalten auf optimale Breite bringen 
28.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: berndk
08.11.2012 um 15:04 Uhr
Hallo bastla,

du bist absolut genial!!!
Läuft alles wunderbar, herzlichen Dank!!!!
Da hätt ich ne Ewigkeit dafür gebraucht, wenn ich es überhaupt hinbekommen hätte.

Viele Grüße

Bernd
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Txt Dateien in Excel importieren
gelöst Frage von SerbitarMicrosoft Office9 Kommentare

Hallo Kollegen, Ich möchte gerne mittels Excel eine Txt einlesen und die Infos in Spalten aufteilen. Die Spaltenheader sind ...

Microsoft Office
Excel VBA: mehrere txt-Dateien importieren, Zeilenumbruch als Trennzeichen
gelöst Frage von jojojoMicrosoft Office11 Kommentare

Hallo zusammen. seit ein paar Tagen versuche ich vergeblich (weil ich praktisch keine Ahnung von Makros bzw. VBA habe) ...

Windows 7
Mehrere TXT mit Dateinamen in Excel importieren
Frage von Sophie12345Windows 71 Kommentar

Hallo zusammen, ich hoffe jemand kann mir helfen. ich habe mehrere Ordner mit jeweils ca. 40-60 txt Dateien, diese ...

Microsoft Office
Excel VBA - Inhalte und Dateiname von txt-Dateien automatisch in Excel importieren
gelöst Frage von Booster07Microsoft Office2 Kommentare

Hallo zusammen, folgendes Problem habe ich so leider nicht im Internet finden können. Deshalb hoffe ich auf eure Hilfe. ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 104 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell13 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...