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

gelöst Aus mehreren .txt bestimmte Werte auslesen und in ein Excelsheet schreiben

Mitglied: harry8m

harry8m (Level 1) - Jetzt verbinden

04.02.2010 um 08:16 Uhr, 15755 Aufrufe, 25 Kommentare

Hallo,
Bin neu hier und bräuchte eine schnelle Lösung.
Wir haben einige hundert .txt Dateien. in denen stehen definierte Inhalte mit Werten. Nun möchte ich alle .txt auf bestimmte Einträge durchsuchen und die gefunden Einträge in ein Ecxelblatt untereinander einfügen.

Beispiel:

dateiname.txt

......

Codename Penryn
Specification Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz
Package (platform ID) Socket P (478) (0x7)
CPUID 6.7.6
Extended CPUID 6.17
Core Stepping C0
Technology 45 nm

.......

erhalten möchte ich nun:

Excel:

A:B:C:D
dateiname:Penryn:Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz:45 nm
.....
wobei ich noch weitere Werte erhalten möchte (max.10)

Kann mir da jemand BITTE helfen, kannmich einfach viel zu wenig damit aus....

Danke

Harry
Mitglied: H41mSh1C0R
04.02.2010 um 08:47 Uhr
"Kann mir da jemand BITTE helfen, kannmich einfach viel zu wenig damit aus...."

Nichts für ungut, aber es gibt sowas wie eine SUFU.

Suche einfach mal nach

- "Textdatei in Excel auslesen"
- "per VBA Textdateien auslesen"

oder ähnlichem.

Es gibt soooooo viele schön dokumentierte Quellen.

Und der beste Weg die eigene Unkenntnis zu vertreiben ist die anfangen zu lesen und nicht wenn einer eine Lösung geliefert hat, per C&P übernehmen und freuen.


Edit:

mal so als Tipp am Rande:

https://www.administrator.de/Daten_mit_bestimmten_Kriterien_aus_Textdate ...
Bitte warten ..
Mitglied: bastla
04.02.2010 um 09:01 Uhr
Hallo harry8m und willkommen im Forum!

Aus Deiner Beschreibung geht nicht hervor, wie die einzelnen Zeilen aufzuteilen sind - gibt es ein Trennzeichen (zB TAB) zwischen Feldnamen (zB "Core Stepping) und Werten ("C0"), oder muss der Name "weggefiltert" werden, um den Wert zu erhalten?

Grüße
bastla
Bitte warten ..
Mitglied: H41mSh1C0R
04.02.2010 um 09:17 Uhr
^^ das Leerzeichen als Delimiter ist auch übel xD

Textdateien im CVS stil machen sich da schon besser =)
Bitte warten ..
Mitglied: bastla
04.02.2010 um 09:30 Uhr
@H41mSh1C0R
^^ das Leerzeichen als Delimiter ist auch übel xD
Wer will's schon leicht haben ...

Sollte sich aber mit VBA auch anhand der Feldnamen lösen lassen:
01.
Sub Sammeln()
02.

03.
Ordner = "D:\Daten"
04.
Dateityp = LCase("txt")
05.
Felder = Array("Codename", "Specification", "Technology", "Core Stepping")
06.

07.
MaxFeldIndex = UBound(Felder)
08.
Dim FeldL() As Integer
09.
ReDim FeldL(MaxFeldIndex)
10.
For i = 0 To MaxFeldIndex
11.
    FeldL(i) = Len(Felder(i))
12.
Next
13.

14.
Zeile = 2
15.
Rows(CStr(Zeile) & ":65536").ClearContents
16.

17.
Set fso = CreateObject("Scripting.FileSystemObject")
18.
For Each Datei In fso.GetFolder(Ordner).Files
19.
    If LCase(fso.GetExtensionname(Datei.Name)) = Dateityp Then
20.
        Daten = Datei.OpenAsTextStream.ReadAll
21.
        Cells(Zeile, 1) = fso.GetBaseName(Datei.Name)
22.
        For i = 0 To MaxFeldIndex
23.
            Pos = InStr(Daten, Felder(i))
24.
            If Pos > 0 Then
25.
                Wert = Trim(Split(Mid(Daten, Pos + FeldL(i)), vbCrLf)(0))
26.
                Cells(Zeile, i + 2).Value = Wert
27.
            End If
28.
        Next
29.
       Zeile = Zeile + 1
30.
    End If
31.
Next
32.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: harry8m
04.02.2010 um 10:40 Uhr
Hallo bastla,


Vielen, vielen Dank!!!!!

Genau so was hab ich mir vorgestellt.

Nur noch eins, beim Ausführen kommen die Zwischenräume als "Kästchen", sind wahrscheinlich TABs. Lassen sich diese noch entfernen?
Habs händisch gemacht, csv speichern, editieren, speichern und ins Excel.

Großes LOB !! für schnelle Antwort.

THX

@H41mSh1C0R: Hab die SUFU genutzt, nur nicht für mich das richtige gefunden.....
Bitte warten ..
Mitglied: bastla
04.02.2010 um 11:52 Uhr
Hallo harry8m!
Nur noch eins, beim Ausführen kommen die Zwischenräume als "Kästchen", sind wahrscheinlich TABs
Deshalb meine Frage oben ...

Ändere die Zeile 25 auf
Wert = Replace(Split(Mid(Daten, Pos + FeldL(i)), vbCrLf)(0), vbTab, "")
... und das "Replace()" hättest Du tatsächlich in dem von H41mSh1C0R verlinkten Beitrag gefunden.

Grüße
bastla
Bitte warten ..
Mitglied: harry8m
04.02.2010 um 12:58 Uhr
Ähem, OK DANKE!

Das tollste Forum und die nettesten Leute !!

THX bastla

LG
harry8m
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 16:51 Uhr
Zitat von bastla:

@H41mSh1C0R
> ^^ das Leerzeichen als Delimiter ist auch übel xD
Wer will's schon leicht haben ...

Sollte sich aber mit VBA auch anhand der Feldnamen lösen lassen:
01.
Sub Sammeln()
02.
> 
03.
> Ordner = "D:\Daten"
04.
> Dateityp = LCase("txt")
05.
> Felder = Array("Codename", "Specification", "Technology", "Core Stepping")
06.
> 
07.
> MaxFeldIndex = UBound(Felder)
08.
> Dim FeldL() As Integer
09.
> ReDim FeldL(MaxFeldIndex)
10.
> For i = 0 To MaxFeldIndex
11.
>     FeldL(i) = Len(Felder(i))
12.
> Next
13.
> 
14.
> Zeile = 2
15.
> Rows(CStr(Zeile) & ":65536").ClearContents
16.
> 
17.
> Set fso = CreateObject("Scripting.FileSystemObject")
18.
> For Each Datei In fso.GetFolder(Ordner).Files
19.
>     If LCase(fso.GetExtensionname(Datei.Name)) = Dateityp Then
20.
>         Daten = Datei.OpenAsTextStream.ReadAll
21.
>         Cells(Zeile, 1) = fso.GetBaseName(Datei.Name)
22.
>         For i = 0 To MaxFeldIndex
23.
>             Pos = InStr(Daten, Felder(i))
24.
>             If Pos > 0 Then
25.
>                 Wert = Trim(Split(Mid(Daten, Pos + FeldL(i)), vbCrLf)(0))
26.
>                 Cells(Zeile, i + 2).Value = Wert
27.
>             End If
28.
>         Next
29.
>        Zeile = Zeile + 1
30.
>     End If
31.
> Next
32.
> End Sub
33.
> 
Grüße
bastla


Hallo zusammen,

Bin ein totaler Neuling und bin nach langem Googlen auf diese Seite gestossen.
War genau auf der Suche nach so einem VBA Script (Vielen Dank für das Bereitstellen). Habe die Felder meinen Bedürfnissen angepasst, aber nach einer Weile einlesen kommt der Eintrag:
Input paste end of file.
Habe schon alles versucht und das ganze Web durchforstet, aber irgendwie bringe ich das nicht hin.

Kann mir da jemand helfen?
Hab schon alles versucht, aber bis jetzt habe ich noch keine Lösung

Gruss
Garfield81
Bitte warten ..
Mitglied: bastla
24.03.2014, aktualisiert um 18:40 Uhr
Hallo garfield81 und willkommen im Forum!

Ich würde ja auf eine leere Datei (Dateigröße 0 Byte) tippen. Falls es daran liegt, sollte folgende Zeile 19 helfen:
If LCase(fso.GetExtensionname(Datei.Name)) = Dateityp And Datei.Size > 0 Then
Damit würde diese Datei dann übersprungen.

Grüße
bastla
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 19:12 Uhr
Bastla du bist der beste
Genau das war es, auf das wäre ich nie gekommen. (Wie gesagt noch ein totaler Neuling, man sieht zum Teil vor lauter Bäumen den Wald nicht mehr)

Vielleicht kannst du mir noch eine Frage beantworten,
Ich habe im Ordner folgende Text Dateien:

chzu......txt
chru....txt
chrg....txt
chgs...txt
chmb....txt

zusammen sind es ca. 900 Text Dateien

Ich brauche aber nur alle Text Dateien von chzu, chru, chrg im Excel aufgelistet. Kann man die anderen irgendwie Ausfiltern lassen.
Text Dateien dürfen im Ordner aber nicht gelöscht werden.

Vielen Lieben Dank

Grüsse
Garfield81
Bitte warten ..
Mitglied: bastla
24.03.2014 um 19:26 Uhr
Hallo garfield81!
Ich brauche aber nur alle Text Dateien von chzu, chru, chrg im Excel aufgelistet.
Kannst Du da noch konkretisieren? Meinst Du alle mit "ch" beginnenden Dateien, oder tatsächlich nur die 3 Genannten?

Grüße
bastla
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 19:40 Uhr
Hallo bastla

Genial wäre, wenn man nur die 3 chzu, chru und chrg beginnenden Dateien (Sind ca. 400-500 Dateien) filtern kann.

Bin aber auch schon mit den ch beginnenden zufrieden
Da viele Dateien mit us, pa, aed, beb usw. anfangen.

Grüsse
Garfield81
Bitte warten ..
Mitglied: bastla
24.03.2014 um 19:59 Uhr
Hallo garfield81!

In diesem Fall müsstest Du zwischen Zeile 4 und 5 einfügen:
01.
Prefix = "#chzu#chru#chrg#" 'nur Dateien, deren Name mit diesen Zeichen beginnt, verarbeiten
02.
PrefixLen = 4 'einheitliche Länge des Präfixes (Zeichenanzahl)
und die Zeile 19 durch
    If LCase(fso.GetExtensionname(Datei.Name)) = Dateityp And Datei.Size > 0 And InStr(Prefix, "#" & LCase(Left(Datei.Name, PrefixLen)) & "#") > 0 Then
ersetzen (ungetestet).

Die in Zeile 4 angegebenen Werte ("chzu" etc) müssen in Kleinbuchstaben geschrieben und, wie gezeigt, durch "#" begrenzt sein.

Grüße
bastla
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 20:20 Uhr
Hallo bastla

ersetzt und es funktioniert 1A
Unglaublich wie du das so schnell aus dem Ärmel zückst. Da muss ich noch sehr, sehr viel lernen bis ich so weit bin
Jetzt sehe ich im Excel nur noch dass was ich will. Genial


Jetzt fehlt mir nur noch das Änderungsdatum der Files und dann bin ich überglücklich.
Habe es mit FileDateTime versucht, aber geht leider nicht. Bin da glaube ich auf dem falschen Weg.


Grüsse
Garfield
Bitte warten ..
Mitglied: bastla
24.03.2014 um 20:26 Uhr
Hallo garfield81!
Jetzt fehlt mir nur noch das Änderungsdatum der Files und dann bin ich überglücklich.
Verwende
Datei.DateLastModified
(Erstellungsdatum wäre übrigens ".DateCreated").

Grüße
bastla
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 20:43 Uhr
Hallo bastla,

Danke für den Input.

Klappt soweit, aber nun kommt immer die Meldung Objekt erforderlich und das Datum ist falsch formatiert.

Danke und Güsse
Garfield81
Bitte warten ..
Mitglied: bastla
24.03.2014 um 20:48 Uhr
Hallo garfield81!

Poste doch bitte Deinen aktuellen Code (unter Verwendung der passenden Formatierung) und erkläre auch kurz, was Du mit "falsch formatiert" meinst ...

Grüße
bastla
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 20:49 Uhr
Zitat von garfield81:

Hallo bastla,

Danke für den Input.

Klappt soweit, aber nun kommt immer die Meldung Objekt erforderlich und das Datum ist falsch formatiert.

Danke und Güsse
Garfield81

Habe mich vertippt, darum kam die Meldung Objekt erforderlich
Aber das Datum formatiert er nicht korrekt:
Excel --> 13.01.1900 00:43:12
Datei --> 13.03.2014 15:26

Hast du eine Ahnung woran das liegen könnte?

Grüsse
Garfield81
Bitte warten ..
Mitglied: garfield81
24.03.2014, aktualisiert um 21:39 Uhr
Hier mein Code:

Next
Zeile = 2
Rows(CStr(Zeile) & ":655360").ClearContents
Set fso = CreateObject("Scripting.FileSystemObject")
For Each Datei In fso.GetFolder(Ordner).Files
If LCase(fso.GetExtensionname(Datei.Name)) = Dateityp And Datei.Size > 0 And InStr(Prefix, "#" & LCase(Left(Datei.Name, PrefixLen)) & "#") > 0 Then
Daten = Datei.OpenAsTextStream.ReadAll
Cells(Zeile, 9) = fso.GetBaseName(Datei.Name)
Cells(Zeile, 10) = fso.GetBaseName(Datei.DateLastModified)
For i = 0 To MaxFeldIndex
Pos = InStr(Daten, Felder(i))
If Pos > 0 Then
Wert = Trim(Split(Mid(Daten, Pos + FeldL(i)), vbCrLf)(0))
Cells(Zeile, i + 1).Value = Wert
End If
Next
Zeile = Zeile + 1
End If
Next
MsgBox "Daten Aktualisiert"

End Sub</code>

Grüsse
Garfield81
Bitte warten ..
Mitglied: bastla
24.03.2014, aktualisiert um 21:04 Uhr
Hallo garfiel81!

Sorry - kann ich nicht nachvollziehen. Auch ohne eine Zellformatierung vorzunehmen wird bei mir (Excel 2010) das Datum nach einem Test mit
Cells(Zeile, "M").Value = Datei.DateLastModified
im Format "TT.MM.JJJJ hh:mm" angezeigt.

[Edit] Posts haben sich zeitlich überschnitten ...

In Deiner Zeile 24 hast Du ein unnötiges "fso.GetBaseName()" (damit wird aus einem Dateinamen nur der Name, ohne Dateityp, extrahiert, was natürlich bei einer Datumsangabe alles ab dem letzten Punkt = ab der Jahreszahl wegschneidet).
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 21:05 Uhr
Hallo Bastla,

Hmmm Sorry mein Fehler, hab das Buch VBA mit Excel vor mir und dort ist es auch mit

01.
Cells(Zeile, "M").Value = Datei.DateLastModified


beschrieben.

Aber hab zu wenig ins Buch geschaut und zu stark auf den Code oberhalb

01.
Cells(Zeile, 9) = fso.GetBaseName(Datei.Name)


und diesen kopiert und verändert... Und das war auch gleich der Fehler.

Nun klappt es auf jeden Fall.

Vielen Dank

Grüsse
Garfield81
Bitte warten ..
Mitglied: bastla
24.03.2014 um 21:09 Uhr
Hallo garfield81!

Freut mich, wenn's jetzt passt.

Grüße
bastla
Bitte warten ..
Mitglied: garfield81
24.03.2014 um 21:14 Uhr
Zitat von bastla:

Hallo garfield81!

Freut mich, wenn's jetzt passt.

Grüße
bastla

Hallo Bastla,

Danke nochmals für deine Hilfe, stand so einige male auf dem Schlauch......

Wie gesagt muss noch viel lernen was VBA Codes angeht.

Ich bin dir jetzt schon Dankbar, für das beantworten meiner Zukünftigen Fragen Hehe

Komme so langsam auf den Geschmack und werde sicherlich noch einiges mit VBA Codierung ausprobieren.

Und da könnten schon noch ein paar fragen auftauchen.

Grüsse
Garfield81
Bitte warten ..
Mitglied: BjoernUsw
16.01.2017, aktualisiert um 11:24 Uhr
Hallo Zusammen,
ich bin ebenfalls VBA Neuling und komme mit Google nicht weiter.
Ich habe Dateien mit der Formatierung mit variabler Blockanzahl...
01.
Datum: 
02.
       06.12.2016
03.
Anfangszeit:
04.
       08:51:30
05.
Endzeit
06.
       10:41:33
07.
Arbeitszeit (incl. 30 min Pause):
08.
       01:50:02
09.
Du hast 06:39:57 zu wenig gearbeitet!
10.

11.
--------------------------------------------
12.

13.
Datum: 
14.
       06.12.2016
15.
Anfangszeit:
16.
       10:42:50
17.
Endzeit
18.
       11:09:41
19.
Arbeitszeit (incl. 30 min Pause):
20.
       00:26:51
21.
Du hast 06:13:06 zu wenig gearbeitet!
22.

23.
--------------------------------------------
24.

25.
Datum: 
26.
       06.12.2016
27.
Anfangszeit:
28.
       11:10:12
29.
Endzeit
30.
       15:33:49
31.
Arbeitszeit (incl. 30 min Pause):
32.
       04:23:37
33.
Du hast 01:49:29 zu wenig gearbeitet!
34.
.. und würde daraus gerne die erste Anfangszeit und die letzte Arbeitszeit auslesen und nicht direkt in Felder, sondern erst in Variablen schreiben.
Das Auslesen der Werte und schreiben in Felder habe ich in einem Testarbeitsblatt schon hinbekommen, allerdings sind die Spalten in der Mappe, in der das Script laufen soll, anders benannt und sollen auch nicht verändert werden.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Wert in einer TXT Datei suchen
Frage von nolle99Batch & Shell11 Kommentare

Hallo Leute Ich habe ein Problem Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 ...

Microsoft Office

Excelsheet gesperrt durch nicht mehr vorhandenen AD-User

Frage von Dopamin85Microsoft Office5 Kommentare

Hallo zusammen, wir haben seit langer Zeit folgendes Phänomen: Ein bestimmtes Exelsheet wird immer wieder mal durch einen AD-User ...

Microsoft Office

Word bestimmt Sprache selbst

gelöst Frage von honeybeeMicrosoft Office1 Kommentar

Hallo, habe in Word 2016 ein nerviges Problem: Auf meinem Computer (Windows 10) sind zwei Sprachen installiert: Deutsch und ...

Batch & Shell

Wert aus batch in externe txt-Datei oder Zwischenablage?

gelöst Frage von Yannxck1Batch & Shell5 Kommentare

Hallo, ich möchte den Wert der bei "Schlüsselinhalt" angegeben wird in eine externe Datei abspeichern oder in die Zwischenablage ...

Neue Wissensbeiträge
Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von Lochkartenstanzer vor 3 StundenHumor (lol)8 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...

Windows Update

KB4517297 verfügbar, behebt Fehler in VB6 VBA VBScript

Information von sabines vor 5 StundenWindows Update

Das Update behebt mögliche Fehler in VB6, VBA und VBScript, die durch das Update KB4512486 vom August entstanden sind. ...

Viren und Trojaner

Staatstrojaner soll auch per Einbruch installiert werden können

Information von transocean vor 1 TagViren und Trojaner2 Kommentare

Moin, Bundesinnenminister Horst Seehofer will dem Verfassungsschutz Wohnungseinbrüche erlauben, um den geplanten Staatstrojaner zu installieren. Gruß Uwe

Windows 7
Win7 Update scheitert KB4512506
Information von infowars vor 2 TagenWindows 7

Falls jemand auch das Problem hat mit dem: Monatliches Sicherheitsqualitätsrollup für Windows 7 für x64-basierte-Systeme (KB4512506) Das scheint mit ...

Heiß diskutierte Inhalte
Hyper-V
Bei Neuaufbau auf Core-Server setzen?
gelöst Frage von dertowaHyper-V32 Kommentare

Hallo zusammen, ich habe vor einigen Monaten die Verantwortung für eine EDV-Landschaft übernommen die seit Jahren von einem Dienstleister ...

Switche und Hubs
Glasfaser-Anschluss Telekom muss verteilt werden
Frage von cansoniSwitche und Hubs30 Kommentare

Vorweg: Bin nur Anwender und kein Experte Die Situation: Der Vermieter stellt einen Glasfaseranschluss in der Wohnung bereit. Wir ...

Hyper-V
VMs von Hyper-V auf externer Festplatte
gelöst Frage von SnowbirdHyper-V18 Kommentare

Hallo, ich möchte gerne von VirtualBox auf Hyper-V umsteigen und würde auch gerne weiterhin meine VMs auf der externen ...

Festplatten, SSD, Raid
SSDs durch Lagerung ohne Strom nach 6 Monaten defekt?!?
gelöst Frage von GlobetrotterFestplatten, SSD, Raid16 Kommentare

Moin Gemeinde Ich hatte gerade nen Trauerspiel Habe hier etliche NAS-Geräte herumfahren welche ich mal auf die Seite gelegt ...