Excel Datei durchsuchen
Guten Morgen zusammen,
ich hab ein kleines Proble mit Excel und VBS. Ich versuche eine Excel Datei nach einem Benutzernamen zu durchsuchen, dann soll er mir, wenn er diesen gefunden hat, in der gleichen Zeile, in der zweiten Spalten den passenden Eintrag in eine Variable schreiben. Leider klappts nicht, er wirft mir immer nur den Wert in der falschen Zeile aus. Eine Idee? Danke Euch schon mal...Hier ist mein Code:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(filename)
Username = "ExZivi"
intRow = 2
objExcel.Cells(intRow,1).Value = "&username&"
Wscript.Echo "Zertifikat: " & objExcel.Cells(intRow, 2).Value
intRow = intRow + 1
objWorkbook.Close False
objExcel.Quit
ich hab ein kleines Proble mit Excel und VBS. Ich versuche eine Excel Datei nach einem Benutzernamen zu durchsuchen, dann soll er mir, wenn er diesen gefunden hat, in der gleichen Zeile, in der zweiten Spalten den passenden Eintrag in eine Variable schreiben. Leider klappts nicht, er wirft mir immer nur den Wert in der falschen Zeile aus. Eine Idee? Danke Euch schon mal...Hier ist mein Code:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(filename)
Username = "ExZivi"
intRow = 2
objExcel.Cells(intRow,1).Value = "&username&"
Wscript.Echo "Zertifikat: " & objExcel.Cells(intRow, 2).Value
intRow = intRow + 1
objWorkbook.Close False
objExcel.Quit
Please also mark the comments that contributed to the solution of the article
Content-Key: 82684
Url: https://administrator.de/contentid/82684
Printed on: April 24, 2024 at 11:04 o'clock
5 Comments
Latest comment
Hallo exzivi und willkommen im Forum!
Das müsste eher so aussehen:
Durch die "For"-Schleife (oder ein alternatives Konstrukt mit "Loop") erreichst Du, dass nur bis maximal Zeile 65536 gesucht wird.
"LCase()" sorgt dafür, dass die Groß-/Kleinschreibung beim Vergleich der Benutzernamen keine Rolle spielt.
"Exit For" bewirkt schließlich, dass die Schleife sofort verlassen wird, nachdem der Benutzername gefunden werden konnte.
Grüße
bastla
[Edit] Schleifenvariable i an den nötigen Stellen eingesetzt. [/Edit]
Das müsste eher so aussehen:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(filename)
Username = "ExZivi"
intRow = 2
For i = intRow To 65536
If LCase(objExcel.Cells(i,1).Value) = LCase(Username) Then
WScript.Echo "Zertifikat: " & objExcel.Cells(i, 2).Value
Exit For
End If
Next
objWorkbook.Close False
objExcel.Quit
Durch die "For"-Schleife (oder ein alternatives Konstrukt mit "Loop") erreichst Du, dass nur bis maximal Zeile 65536 gesucht wird.
"LCase()" sorgt dafür, dass die Groß-/Kleinschreibung beim Vergleich der Benutzernamen keine Rolle spielt.
"Exit For" bewirkt schließlich, dass die Schleife sofort verlassen wird, nachdem der Benutzername gefunden werden konnte.
Grüße
bastla
[Edit] Schleifenvariable i an den nötigen Stellen eingesetzt. [/Edit]
Hallo ExZivi,
auch ein Willkommen von mir
Was bastla geschrieben hat:
Also innerhalb des If´s in der For-Schleife. Das intRow müsste dann durch i ersetzt werden.
Was, wie ich gerade sehe, natürlich auch in der If Bedingung ausgetauscht werden müsste
BG, Felix -misterdemeanor-
auch ein Willkommen von mir
Was bastla geschrieben hat:
WScript.Echo "Zertifikat: " & objExcel.Cells(intRow, 2).Value
Also innerhalb des If´s in der For-Schleife. Das intRow müsste dann durch i ersetzt werden.
Was, wie ich gerade sehe, natürlich auch in der If Bedingung ausgetauscht werden müsste
BG, Felix -misterdemeanor-
@exzivi
Sorry - trotz einer Menge Text war's leider gerade so zwischen Tür und Angel (noch nicht einmal "ungetestet" habe ich dazugeschrieben, fällt mir gerade auf *kopfschüttel*) - ich korrigiere das dann mal besser da oben ...
@misterdemeanor
Danke für's Aufräumen.
Grüße
bastla
Sorry - trotz einer Menge Text war's leider gerade so zwischen Tür und Angel (noch nicht einmal "ungetestet" habe ich dazugeschrieben, fällt mir gerade auf *kopfschüttel*) - ich korrigiere das dann mal besser da oben ...
@misterdemeanor
Danke für's Aufräumen.
Grüße
bastla