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, 15733 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: ...

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

Microsoft Office

Excel Formel - WENN mit mehr als 3 Kriterien

gelöst Frage von fuguMicrosoft Office2 Kommentare

Hallo an alle Office- und besonders Excel-Spezis :-) Ich breche mir gerade die Finger an einer Formel mit mehr ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 2 TagenAusbildung35 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 4 TagenSpeicherkarten5 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 5 TagenSicherheit1 Kommentar

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 5 TagenHardware4 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Passwortwechsel Zeitpunkt festlegen
Frage von Looser27Windows Userverwaltung27 Kommentare

Guten Morgen liebe Kolleginnen und Kollegen, da es eine Userin in meinem Urlaub geschafft hat, sich vom AD vollständig ...

Windows Server
Probleme im AD am Außenstandort
gelöst Frage von emeriksWindows Server19 Kommentare

Hi, wir haben ein Problem mit AD und GPO am Außenstandort und ich stehe momentan mächtig auf dem Schlauch. ...

CMS
Seltsame Joomla-Meldung auf unserer WebSite
Frage von Winfried-HHCMS14 Kommentare

Hallo in die Runde! Kennt sich jemand mit Joomla aus? Im Backend unserer WebSite lesen wir seit einiger Zeit ...

Vmware
Sporadischer Ausfall physischer und virtueller Server (VMWare 5.5) im Netzwerk (anpingbar aber sonst ohne Funktion)
Frage von stoey20Vmware13 Kommentare

Hallo Gemeinde, seit ein paar Tagen haben wir in der Firma immer wieder das Problem, dass einige unserer VMWare ...