Wert aus Excel mit Computernamen vergleichen und in Textdatei schreiben
Hi ein neuer Anlauf.....
Danke Biber )
Hi
mit dem nachfolgenden Code lese ich den Computername aus und schreibe diesen in eine Textdatei.
Nachfolgende möchte ich diesen Wert aus der Textdatei Comp_Name.txt mit den Wert aus Spalte A einer Exceldatei prüfen.
Wenn der Wert aus der Datei in Spalte A identisch ist, soll der Wert aus Spalte B in eine neue Datei "Comp_Nameneu.txt" angelegt werden.
Kann mir dabei jemand helfen ? HIntergrund ist ein Entwurf für eine Neuordnung der Computernamen.
@ Biber: Ich hoffe das ist jetzt ein wenig verständlicher. Mir geht es hauptsächlich um den Vergleich der Textdatei mit der Exceldatei.
Danke Ritzratz
Danke Biber )
Hi
mit dem nachfolgenden Code lese ich den Computername aus und schreibe diesen in eine Textdatei.
'*** Computername auslesen und in Datei schreiben.
set fso = createobject ("scripting.filesystemobject")
set ntwrk = createobject ("wscript.network")
set schreiben = fso.createtextfile("C:\Comp_Name.txt")
schreiben.writeline (ntwrk.computername)
schreiben.close
Nachfolgende möchte ich diesen Wert aus der Textdatei Comp_Name.txt mit den Wert aus Spalte A einer Exceldatei prüfen.
Wenn der Wert aus der Datei in Spalte A identisch ist, soll der Wert aus Spalte B in eine neue Datei "Comp_Nameneu.txt" angelegt werden.
Kann mir dabei jemand helfen ? HIntergrund ist ein Entwurf für eine Neuordnung der Computernamen.
@ Biber: Ich hoffe das ist jetzt ein wenig verständlicher. Mir geht es hauptsächlich um den Vergleich der Textdatei mit der Exceldatei.
Danke Ritzratz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159185
Url: https://administrator.de/contentid/159185
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo RitzRatz!
Da ich dem Plan mit dem Schreiben zweier Textdateien mit je einer Zeile noch nicht sonderlich viel Sinnhaftigkeit abgewinnen kann, zunächst nur ein Ansatz zum Auslesen des gesuchten Wertes:
Die Zeile 11 führt übrigens einen simplen
Grüße
bastla
Da ich dem Plan mit dem Schreiben zweier Textdateien mit je einer Zeile noch nicht sonderlich viel Sinnhaftigkeit abgewinnen kann, zunächst nur ein Ansatz zum Auslesen des gesuchten Wertes:
Exceldatei = "C:\Test\test.xls"
CompName = CreateObject ("WScript.Network").ComputerName
Wert = CompName & " in " & Exceldatei & " nicht gefunden!"
Set oXL = WScript.CreateObject("EXCEL.application")
On Error Resume Next
With oXL
.Visible = False
.Workbooks.Open Exceldatei
Wert = .WorksheetFunction.VLookup(CompName, .Range("Tabelle2!A1:B1000"), 2, False)
.ActiveWorkbook.Close False
.Application.Quit
End With
On Error Goto 0
WScript.Echo Wert
SVERWEIS()
durch ...Grüße
bastla
Hallo RitzRatz!
Na dann:
Anmerkungen:
Gesucht wird (siehe "
Damit auch in der ersten oder letzten Zeile der Textdatei die Bedingung "beginnt und endet mit einer Zeilenschaltung" erfüllt ist, werden diese "
Als Suchergebnis kommt nur die erste Fundstelle und davon der erste "SubMatch"-Teil (= der angesprochene "beliebige Text") infrage - daher können die Indizes (jeweils 0) "hardcoded" angegeben werden.
Falls die Variable "
der Sucherfolg abgefragt werden ...
Grüße
bastla
[Edit] Zeile 11 so geändert ("+" anstatt "*"), dass als "Wert" zumindest ein Zeichen enthalten sein muss [/Edit]
Na dann:
Liste = ""C:\Test\Test.txt"
Delim = ","
CompName = CreateObject ("WScript.Network").ComputerName
Wert = """" & CompName & """ in """ & Liste & """ nicht gefunden!"
Set fso = CreateObject("Scripting.FileSystemObject")
Inhalt = fso.OpenTextFile(Liste).ReadAll
Set rE = New RegExp
rE.Pattern = vbCrLf & CompName & Delim & "(.+)" & vbCrLf
rE.IgnoreCase = True
On Error Resume Next
Wert = rE.Execute(vbCrLf & Inhalt & vbCrLf)(0).SubMatches(0)
On Error Goto 0
WScript.Echo Wert
Gesucht wird (siehe "
rE.Pattern
" in Zeile 11) nach der Kombination Zeilenschaltung + Computername + Trennzeichen + beliebiger Text + Zeilenschaltung, wobei "beliebiger Text" aus mindestens einem Zeichen bestehen muss und das eigentlich gewünschte Ergbnis darstellt (weshalb er in Klammern gesetzt ist).Damit auch in der ersten oder letzten Zeile der Textdatei die Bedingung "beginnt und endet mit einer Zeilenschaltung" erfüllt ist, werden diese "
vbCrLf
"-Kombinationen einfach beim Aufruf der Suche (in Zeile 14) dem eingelesenen (gesamten) Dateiinhalt hinzugefügt.Als Suchergebnis kommt nur die erste Fundstelle und davon der erste "SubMatch"-Teil (= der angesprochene "beliebige Text") infrage - daher können die Indizes (jeweils 0) "hardcoded" angegeben werden.
Falls die Variable "
Wert
" in Zeile 5 (dient ja mehr als Demo) nicht vorbelegt wird, kann natürlich nach Zeile 15 mit zBIf Wert <> "" Then ...
Grüße
bastla
[Edit] Zeile 11 so geändert ("+" anstatt "*"), dass als "Wert" zumindest ein Zeichen enthalten sein muss [/Edit]