Importieren und analysieren Sie mehrere text-Dateien in eine einzige XLS?

Ich habe schon googeln dieses den ganzen Tag, aber da habe ich null VBA-Kenntnisse, ich kann nichts finden, das funktioniert einwandfrei und ich kann mich anpassen an meine Bedürfnisse.

Ich habe einen Ordner mit über 4500 text-Dateien mit der Ausgänge einer hardware test auf Computern, die wir verarbeiten. Die text-Datei hat eine Menge von Informationen, die ich nicht brauche. Was ich tun müssen ist, importieren Sie alle diese Dateien in eine einzige Tabelle und dann analysieren Sie bis auf die 3 gewünschten Felder jeder - und in einer solchen Weise, die leicht lesbar sind.

Ich hatte eine harte Zeit, die auch der Suche nach einem VBA-makro, das den import der text-Dateien ohne Fehler, die ich nicht überwinden kann. Ich fand die folgenden, jedoch ist es festgelegt, das sich für eine zweite Spalte in der Datei, die in meinem Fall Schrauben die eingegebenen Daten und wirft um Werte, die alle über dem Platz (denke kleinere Formatierungs-Problem mal 4500 Einträge).

Hier ist das makro:

Sub test() 
  Dim myDir As String, fn As String, ff As Integer, txt As String 
  Dim delim As String, n As Long, b(), flg As Boolean, x 
  myDir = "c:\test" '<- change to actual folder path
  delim = vbTab '<- delimiter (assuming Tab delimited)
  Redim b(1 To Rows.Count, 1 To 2) 
  fn = Dir(myDir & "\*.txt") 
  Do While fn <> "" 
    ff = FreeFile 
    Open myDir & "\" & fn For Input As #ff 
    Do While Not EOF(ff) 
      Line Input #ff, txt 
      x = Split(txt, delim) 
      n = n + 1 
      If Not flg Then b(n,2) = fn 
      If UBound(x) > 0 Then 
        b(n,1) = x(1) 
      End If 
      flg = True 
    Loop 
    Close #ff 
    flg = False 
    fn = Dir() 
  Loop 
  ThisWorkbooks.Sheets(1).Range("a1").Resize(n,2).Value = b 
End Sub 

Und hier ist ein Beispiel von einem text-Dateien:

ILPN Number: I01128204
MAC Address: E0DB55820F85

Hardware:

CPU:Intel(R) Core(TM) i3-2370M CPU @ 2.40GHz
MOTHERBOARD:Dell Inc. - 0G8TPV - A02
BIOS VERSION/DATE:A02 - 08/15/2012
RAM DETECTED:4096 MB (BANK 0: 0/DDR3/1333 - BANK 2: 0/Unknown/0)
MANUFACTURER:Dell Inc.
PRODUCT:Inspiron 3520
SERIAL:B1JW9V1
NIC SPEED/NAME:100 Mbps - Realtek PCIe FE Family Controller, V:8.1
GRAPHIC RES:1366 x 768 (32 bits)
OPTIC DRIVE:HL-DT-ST, DVD+-RW GT80N   , A103 (E:)
FIXED DISK:ST500LM012 HN-M500MBB - 465.76 GB (C: - GPT)
 - 0.00 GB (D: - MBR)
WINPE:Microsoft Windows 8 Ultimate Edition, 32-bit (build 9200)

Module 126: Result: Ok

Initializing module version='1.0.0.17' with ''
Module Initialization done.
Starting module with: Param1=0x00010010 - Param2=0xFFFF0000
Module start: 14/05/2013 10:38:40
Set language module to: en-US
  Found disk: 0 - 'ST500LM012 HN-M500MBB'
All PHYSICALDRIVE will be used as valid target...
Module started properly.
Cleaning element 'Disk ID: 0 - Model: ST500LM012 HN-M500MBB - Size: 465.762 GB' with       algorithm 'Basic (random)'...
Clean process Successful
Process took 6099 sec to clean 476940.02MB ~ 78.20 MB/Sec
Closing module with code '1'...
Closing module done with result '0'
Releasing module...
Releasing module done at: 14/05/2013 12:20:19

So, von alles, was, die ich brauche, um zu ziehen aus der "ILPN-Nummer", Die MAC-Adresse, und die Zeile, die sagt "Modul 126: Ergebnis OK". Alles andere kann Weg. Es wäre schön, wenn ich es sortiert mit Spalten für die drei Werte, und dann wird jeder Datensatz in einer eigenen Zeile.

Dies ist wahrscheinlich eine zwei-Schritt-Prozess. Eine oder beide Lösungen wäre enorm hilfreich. Danke!

  • Sind Sie auf der Suche nach einem VBScript-Lösung (wie die tags sagen) oder eine VBA-Lösung (wie dein code sagt)? Die beiden Sprachen sind nicht das gleiche.
  • Sorry, ich denke, VBA dann? Was würden Sie im VB-editor in Excel.
  • Ja, das wäre VBA.
InformationsquelleAutor Ikarian | 2013-06-04
Schreibe einen Kommentar