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

Daten mit bestimmten Kriterien aus Textdatei in Excel einlesen

Mitglied: flexxis

flexxis (Level 1) - Jetzt verbinden

05.12.2007, aktualisiert 13.12.2007, 15930 Aufrufe, 6 Kommentare

Hallo Community,

folgendes Ausgangsproblem stellt sich für mich als völligen Skript- Laien :

in einer DHCP Log- Datei befinden sich u.a. die MAC- Adresse, Hostname und Seriennummer von NAS- Platten, die ich gerne auslesen möchte.

bc4b5ac8e20d7e6ed21b48573966730e-bild1 - Klicke auf das Bild, um es zu vergrößern

Es interessieren nur die "Abschnitte" der Log- Datei, in denen Der Hostname mit "nas01" endet, also in denen es um die NAS- Platten geht (siehe Bild).
Es müssen nicht für jede NAS alle Angaben vorhanden sein.

Mein erster Schritt ist gewesen, ein VBA- Macro im Visual Basic Skript Editor von Excel zu schreiben, welches einfach alle Zeilen untereinander in eine Text-Datei schreibt, in denen die benötigten Daten stehen.

1. Frage:
Danach habe ich versucht, das ganze in Excel in der ersten Arbeitsmappe auch untereinander auszugeben (siehe Skript).
Wo steckt da der Fehler drin?



Sub nas01()

Const szSuch = "nas01" ' Such nas01
Const szSuch2 = "NAS01" 'Such NAS01
Const szSuch3 = "Comment = S/N" ' Such Comment S/N
Const szSuch4 = "MAC Address" ' Such MAC

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSourceFile = objFSO.openTextFile("Pfad\zur\Datei\DHCP3TAB", 1) ' Quelldatei öffnen
Set objDestFile = Workbooks.Open("Pfad\zur\Datei\Mappe1.xls").Worksheets("Tabelle1") 'ZielDatei/-Tabelle


Do Until objSourceFile.AtEndOfStream ' Gesammtes TextDok durchgehen
szNextLine = objSourceFile.Readline ' Zeile aus Quelldatei einlesen
If InStr(szNextLine, szSuch) Then ' Wenn Suchtest vorhanden
objDestFile.writeline szNextLine ' Zeile in Zieldatei schreiben
End If
If InStr(szNextLine, szSuch2) Then ' Wenn Suchtest vorhanden
objDestFile.writeline szNextLine ' Zeile in Zieldatei schreiben
End If
If InStr(szNextLine, szSuch3) Then ' Wenn Suchtest vorhanden
objDestFile.writeline szNextLine ' Zeile in Zieldatei schreiben
End If
If InStr(szNextLine, szSuch4) Then ' Wenn Suchtest vorhanden
objDestFile.writeline szNextLine ' Zeile in Zieldatei schreiben
End If
Loop

End Sub

// EDIT: 2. Frage ist schon erledigt. Geht ja auch mit Bordmitteln, manchmal sieht man den Wald vor Bäumen nicht :P -> Suchen/Ersetzen
2. Frage:
Ich würde Ergebniszeilen wie "Hostname = xxxx" "MAC = xx.xx" "SN= xx" bekommen.
Wie ich kann die Bezeichnungen Hostname, MAC, SN im Anschluss entfernen? Diese Bezeichnungen werden ja spätestens sinnlos, wenn sie in Excel in Spalten stehen.




Vielen Dank!
Mitglied: wakko
05.12.2007 um 12:16 Uhr
Moin,

wenn ich das richtig sehe, schreibst du in eine xls-Datei wie in eine Textdatei.
Das geht so nicht.
Probier mal, vorweg ein
01.
Dim objDestFile as Excel.Workbook
02.
Danach kannst du in die Zellen der Excel-datei mit
01.
objDestFile.Sheets(1).Cells(iSpalte, 1).value = szNextLine
Hoffe, der Ansatz hilft dir weiter.
Gruß,
Henrik
Bitte warten ..
Mitglied: flexxis
05.12.2007 um 12:54 Uhr
könntest du den vollständigen Code mal posten?
Ich hatte den Skript - Schnipsel von woanders her geklaut, weiß was es zu bedeuten hat, kann allerdings überhaupt nicht mit VBA programmieren.

Wäre sehr dankbar!

Also ich habe die Lösung inzwischen auch über den Umweg der Text- Datei hinbekommen, aber ich würde es einfach sehr gerne wissen! Ich habe schon nach Lösungen gegooglet, werde dadurch aber nicht schlauer.
Bitte warten ..
Mitglied: wakko
05.12.2007 um 16:07 Uhr
Naja, habe keine Testdatei, daher unngetestet und nur so neben der Arbeit
01.
Sub nas01()
02.
Dim ws As Excel.Worksheet, iRow%, strTemp$, datnr%
03.
Const szSuch = "nas01" ' Such nas01
04.
Const szSuch2 = "NAS01" 'Such NAS01
05.
Const szSuch3 = "Comment = S/N" ' Such Comment S/N
06.
Const szSuch4 = "MAC Address" ' Such MAC
07.
datnr = FreeFile
08.
Open "Pfad\zur\Datei\DHCP3TAB" For Input As #datnr 'Textdokument zum Lesen öffnen
09.
Set ws = ActiveWorkbook.Sheets(1)
10.
i = 1
11.
Do Until EOF(datnr) 'Abbruch bei Ende des Dokuments
12.
    Line Input #datnr, strTemp 'Zeile in strTemp einlesen
13.
    If InStr(strTemp, szSuch) > 0 _
14.
        Or InStr(strTemp, szSuch2) > 0 _
15.
        Or InStr(strTemp, szSuch3) > 0 _
16.
    Then 'Vergleich mit Suchstring
17.
        ws.Cells(i, 1).Value = szNextLine 'Wert in Zelle schreiben
18.
        i = i + 1 'Zähler für nächste Zeile erhöhen
19.
    End If
20.
Loop
21.
Close #datnr
22.
End Sub
MfG
Bitte warten ..
Mitglied: flexxis
10.12.2007 um 09:27 Uhr
Nachtrag meinerseits:
Das funktionierte noch nicht ganz. Hab es etwas verändert. Das unten stehende Skript tat seine Arbeit gut.
Beim Import nach Excel fiel mir auf, dass Leerstellen in der Textdatei (also wenn der Text in der Zeile etwas eingerückt ist) in Excel durch ein Sonderzeichen dargestellt werden. Gibt es da eine Möglichkeit, dem korrekt nachzuhelfen?


Sub test()

Dim ws As Excel.Worksheet

Const szSuch = "nas01" ' Such nas01
Const szSuch2 = "NAS01" 'Such NAS01
Const szSuch3 = "Comment = S/N" ' Such Comment S/N
Const szSuch4 = "MAC Address" ' Such MAC

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSourceFile = objFSO.OpenTextFile("Pfad\zur\Datei\DHCP3TAB", 1) ' Quelldatei öffnen
Set ws = ActiveWorkbook.Sheets(1) ' Zieldatei anlegen / überschreiben

i = 1
Do Until objSourceFile.AtEndOfStream ' Gesammtes TextDok durchgehen
szNextLine = objSourceFile.Readline ' Zeile aus Quelldatei einlesen


If InStr(szNextLine, szSuch) Then

ws.Cells(i, 1).Value = szNextLine 'Wert in Zelle schreiben
i = i + 1 'Zähler für nächste Zeile erhöhen ' Zeile in Zieldatei schreiben


ElseIf InStr(szNextLine, szSuch2) Then

ws.Cells(i, 1).Value = szNextLine 'Wert in Zelle schreiben
i = i + 1 'Zähler für nächste Zeile erhöhen ' Zeile in Zieldatei schreiben

ElseIf InStr(szNextLine, szSuch3) Then

ws.Cells(i, 1).Value = szNextLine 'Wert in Zelle schreiben
i = i + 1 'Zähler für nächste Zeile erhöhen ' Zeile in Zieldatei schreiben

ElseIf InStr(szNextLine, szSuch4) Then

ws.Cells(i, 1).Value = szNextLine 'Wert in Zelle schreiben
i = i + 1 'Zähler für nächste Zeile erhöhen ' Zeile in Zieldatei schreiben

End If

Loop

End Sub
Bitte warten ..
Mitglied: wakko
12.12.2007 um 10:35 Uhr
Hi,

da kannst du die replace-Funktion nutzen,
also:
01.
 szNextLine = replace (szNextLine, chr(9), "")
chr(9) entspricht dem Tabulator, wenn das nicht läuft geht das evt. mit copy'n'paste des Zeichens aus Excel in deinen Quellcode. Wenn es nur Leerzeichen sind, kannst du auch die LTRIM-Funktion nutzen.

Gruß,
Henrik
Bitte warten ..
Mitglied: flexxis
13.12.2007 um 10:10 Uhr
Mit Replace hat es wunderbar geklappt. Danke!
Bitte warten ..
Ähnliche Inhalte
IDE & Editoren

UltraEdit: Textdatei für Excel aufbereiten

gelöst Frage von newbie58IDE & Editoren12 Kommentare

Hallo, ich habe eine Textdatei (Ausschnitte aus einem NC-Programm) die wie folg aussieht: 5112281 ; NC_JOB: 30001 VORFRAESEN AUSLASSSEITE ...

VB for Applications

Abschnitte aus Textdatei in Excel importieren

Frage von Einstein77VB for Applications3 Kommentare

Hallo, Ich habe ein Problem wo ich mangels VBA kenntissen nicht weiter komme. Ich muß Email Daten auswerten. Aus ...

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 ...

Mac OS X

Safari öffnet bestimmt Seite nicht

Frage von tomi93Mac OS X2 Kommentare

Hallo , ich habe an einem iMac bei uns im Unternehmen das Problem das Safari dort eine bestimmte Seite ...

Neue Wissensbeiträge
Humor (lol)
Und wie seid Ihr gegen Cyberattacken gewappnet?
Information von DerWoWusste vor 13 StundenHumor (lol)4 Kommentare

aber wo ist der Hammer? :-)

Sicherheit
Ein weiterer Microsoft-Stirnklatscher
Information von DerWoWusste vor 1 TagSicherheit7 Kommentare

Habe gerade einen Artikel zu einem Sicherheitsproblem gefunden, welches mir zu seiner Zeit (gepatcht 2015) wohl durchgerutscht ist. Es ...

Windows 10
Upgradepfade Windows 10 LTSC
Erfahrungsbericht von Datenreise vor 1 TagWindows 10

Nur eine kurze Info, für diejenigen, die es interessiert, da es hierzu im Netz aus nachvollziehbaren Gründen nicht allzu ...

Administrator.de Feedback
Wartungsarbeiten heute Nacht (Update)
Information von Frank vor 1 TagAdministrator.de Feedback10 Kommentare

Hallo User, durch Umbauarbeiten in unserem Rechenzentrum (am Backbone) kann es heute Nacht (14-15.01.2019) zu kurzen Ausfällen unserer Seite ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 - kein Boot mehr nach Domänenaustritt
gelöst Frage von Ghost108Windows 1025 Kommentare

Hallo zusammen, habe hier eine Windows 10 Maschine, die ich gerne aus der Domäne austreten lassen möchte. Nach Austritt ...

Windows 10
Windows 10 1803 - nicht identifiziertes Netzwerk - kein Login an Domäne möglich
Frage von Tomy389Windows 1021 Kommentare

Hallo Zusammen, ich hoffe zu dem Thema gibt es nicht schon einen Thread aber ich sollte eigentlich schon alles ...

Exchange Server
Microsoft Exchange Ser ver 2016 CU 8 auf den neuesten Stand bringen
gelöst Frage von Hendrik2586Exchange Server20 Kommentare

Hallo an euch alle. :) Kurze Frage. Ich habe hier einen Exchange Server wie o.g. Problem ist das wir ...

Microsoft
SFirm 4.0 auf Terminalserver startet für jeden angemeldeten Benutzer diverse Dienste
Frage von Frank84Microsoft17 Kommentare

Hallo zusammen, wir verwenden Sfirm 4.0 auf einem Terminalserver (der SQL Server ist auf einem separaten Server), das Problem ...