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

Frage Entwicklung VB for Applications

Mitglied: flexxis

flexxis (Level 1) - Jetzt verbinden

05.12.2007, aktualisiert 13.12.2007, 15332 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
Windows Tools
Excel - Import Daten mehrere Kriterien auf Kalenderwoche zuordnen
gelöst Frage von yuki13Windows Tools3 Kommentare

Hallo Zusammen! :) Ich bin ein Frischling auf diesem Forum und gleichfalls in der "Excel-Welt". Ich habe folgendes Problem: ...

Batch & Shell
Doppelpunktgetrennte Textdatei einlesen Batch
gelöst Frage von Fabian-HaasBatch & Shell3 Kommentare

Hallo, ich habe eine Textdatei auf einem Server, die sieht so aus und möchte aus einer bestimmten Zeile das ...

VB for Applications
DB-Abfrage in Excel mit Kriterien aus Excel
gelöst Frage von JensDNDVB for Applications11 Kommentare

Hallo Admins, hab grad folgendes Problem: Es sollen Daten aus einer DB mittels Excel abgerufen werden. Soweit klappt das ...

XML
Einlesen bestimmten Werten, Texten aus XML- Datei in EXCEL
gelöst Frage von EverestXML11 Kommentare

Hallo Experten, ich möchte in Excel die Werte/Texte aus einer XML-Datei direkt lesen ohne sie zu importieren. Kann jemand ...

Neue Wissensbeiträge
Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 1 StundeMicrosoft Office2 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 7 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Batch & Shell
Dateien verschieben mit batch
gelöst Frage von michi-ffmBatch & Shell13 Kommentare

Hallo Zusammen hat jemand evtl eine Idee? Zunächst hier das Skript: Leider werden keine UNC-Pfade unterstüzt, kann mir jemand ...