aerius
Goto Top

Bestimmten Wert aus txt Datei suchen und in Excel ausgeben

Hallo,

lang gesucht und nichts gefunden.
Ich habe eine txt Datei die folgenden Inhalt hat:

switchName: na01_sw01
switchType: 34.0
switchState: Online
switchMode: Native
switchRole: Principal
...

Jetzt würde ich gern den SwitchNamen auslesen und in ein bestimmtes Excelfeld schreiben lassen.
SwitchName muss aber nicht immer in der ersten Zeile stehen.

Das gleiche Script bräuchte ich dann auch für eine txt Datei mit einer IP Adresse.

Vielen Dank schonmal.

Content-ID: 81643

Url: https://administrator.de/contentid/81643

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

miniversum
miniversum 26.02.2008 um 10:52:06 Uhr
Goto Top
Versuchs mal so:
Sub DateiLesenUndSuchen()

  On Error GoTo Fehler
  Dim Datei As String
  Dim Fnr As Long
  Dim Trennzeichen As String
  Dim Suchbegriff As String
    
    Trennzeichen = ": "  
    Suchbegriff = "switchName"  
    Datei = "D:\Datei.txt"  
    Fnr = FreeFile
    Open Datei For Input As #Fnr

    While Not EOF(Fnr)
      Line Input #Fnr, Zeile
      tokens = Split(Zeile, Trennzeichen)
      If tokens(0) = Suchbegriff Then  Range("A1").Value = tokens(1)  
    Wend

    Close #Fnr
    Exit Sub

Fehler:
    MsgBox "Es trat ein Fehler beim Öffnen der" & _  
           " Datei !", 16, "Problem"  
    Exit Sub
    Resume Next
End Sub
Aerius
Aerius 26.02.2008 um 11:14:08 Uhr
Goto Top
Es erscheint nur die Fehlermeldung.

Die Datei liegt auf einem Netzlaufwerk, hab es aber auch mal lokal getestet, bei beidem der gleiche Effekt.

Vielleicht wäre es auch gut wenn er den Pfad nimmt zur Excel Datei, die liegt nämlich auch immer im selben Ordner wie die Text Dateien.
miniversum
miniversum 26.02.2008 um 11:28:53 Uhr
Goto Top
Dann ändere
Datei = "D:\Datei.txt"
in
Datei = Application.ActiveWorkbook.Path & "\Datei.txt"
Und wenn du willst kannst du zur Kontrolle direkt danach noch ein
Msgbox Datei
einbauen.

miniversum
Aerius
Aerius 26.02.2008 um 11:35:21 Uhr
Goto Top
Also das mit dem Pfad funktioniert schonmal.

Aber ne Ausgabe in Excel kommt noch nicht, nur die Fehlermeldung.


Ich habe die Fehlermeldung mal entfernt.
Jetzt sagt er mir als Fehlermeldung:

Laufzeitfehler '9':
Index außerhalb des gültigen Bereichs

Vielleicht hilft dir das weiter. face-wink
miniversum
miniversum 26.02.2008 um 11:58:03 Uhr
Goto Top
Füge mach vor der Zeile
tokens = Split(Zeile, Trennzeichen)
diese ein:
Msgbox Zeile
Dann soltest du sehen was er ausliest.
Vermutlich ist dann die datei nicht ganz so aufgabaut:
switchName: na01_sw01
Es wir imemr nach dem Teil vor dem Trennzeichen (hier also ": ") geschaut und wenn dieser mit dem suchbegriff übereinstimmt der danach genommen.
miniversum
Aerius
Aerius 26.02.2008 um 12:38:21 Uhr
Goto Top
er zeigt mir nacheinander die Sachen an

switchName: na01_sw01
switchType: 34.0
switchState: Online
switchMode: Native
switchRole: Principal

dann kommt eine leere Meldung und danach der Laufzeitfehler.

eigentlich müsste er ja nur aufhören wenn er die switchName Zeile gefunden hat und mir das na01_sw01 ausgeben.
miniversum
miniversum 26.02.2008 um 12:47:32 Uhr
Goto Top
Dann liegt es daran das noch eine Leerzeile drin ist.
Ersetzt die zeile
tokens = Split(Zeile, Trennzeichen)
Durch diese:
If InStr(1, Zeile, Trennzeichen) Then tokens = Split(Zeile, Trennzeichen)
Dann sollte es gehn.
Aerius
Aerius 26.02.2008 um 12:52:47 Uhr
Goto Top
Jetzt hört er zwar nach SwitchName auf, aber dann kommt:

Typen unverträglich.

In der txt datei ist zwischen switchName: und na01_sw01 ein Tabulator
Liegt das vielleicht daran?
miniversum
miniversum 26.02.2008 um 12:58:29 Uhr
Goto Top
Ja daran liegt es!
Dann must du das Trennzeichen anders Festlegen.
Entweder du nimmst statt ": " nur ":" oder ":" & vbTab
Aerius
Aerius 26.02.2008 um 13:09:12 Uhr
Goto Top
Funktioniert face-smile

Mit IP Adressen ebenso, vielen Dank!