Supportnet / Forum / Skripte(PHP,ASP,Perl...)
relative Pfadangabe in VB-Script
Frage
Hallo ihr da draußen!
Wie rufe ich eine Exceldatei aus einem VBScript auf, wenn ich nicht weiß, wo der Nutzer meines VBS-Programms die dazugehörige Exeldatei abgespeichert hat. Z.B objExcel.Workbooks.Open("...\Exeldatei.xls")
Antwort 1 von Rangoo
Am besten, indem der Nutzer den Pfad angibt. Denn auch bei relativen Pfaden musst du die Lage kennen, um hinnavigieren zu können. Zwar nicht absolut (also x:\Verzeichnis\Unterverzeichnis\datei.xls), aber immer noch, wie viele Verzeichnisse über/unter dem Script.
Antwort 2 von struppi
Hallo,
Ich würde eventuell ein Dateiauswahl-Dialog dazwischen schalten.
Es geht aber auch mit VBS.
Folgendes script prüft ob eine mit Pfad angegeben Datei existiert. Ist das nicht der Fall sucht das script den Rechner nach dieser Datei ab.
Wenn sie gefunden wird, korrigiert das script sich selbst und ändert die Pfadangabe. So das beim nächsten Aufruf die Datei sofort geöffnet wird.
Man kann die Datei also jetzt willkürlich auf dem Rechner verschieben.
Sie wird immer wieder gefunden. Allerdings brauch das etwas Zeit! Und ich bin davon ausgegangen, das es diese Datei nur einmal gibt. Denn das script öffnet die zuerst gefundene Datei. Das ließe sich aber noch verbessern indem man die aktuellste (letztes Änderungsdatum) Datei sucht und öffnet.
Wichtig dabei ist, das die erste Zeile mit der Pfadangabe auch wirklich die erste Zeile des Scriptes bildet. Sonst funktioniert die Überschreibung nicht.
gruß struppi
Ich würde eventuell ein Dateiauswahl-Dialog dazwischen schalten.
Es geht aber auch mit VBS.
Folgendes script prüft ob eine mit Pfad angegeben Datei existiert. Ist das nicht der Fall sucht das script den Rechner nach dieser Datei ab.
Wenn sie gefunden wird, korrigiert das script sich selbst und ändert die Pfadangabe. So das beim nächsten Aufruf die Datei sofort geöffnet wird.
Man kann die Datei also jetzt willkürlich auf dem Rechner verschieben.
Sie wird immer wieder gefunden. Allerdings brauch das etwas Zeit! Und ich bin davon ausgegangen, das es diese Datei nur einmal gibt. Denn das script öffnet die zuerst gefundene Datei. Das ließe sich aber noch verbessern indem man die aktuellste (letztes Änderungsdatum) Datei sucht und öffnet.
dateipfad = "C:\WINDOWS\Desktop\Arbeitsordner\inhalt_datencd.txt"
datei = "inhalt_datencd.txt"
set fso = CreateObject("scripting.FilesystemObject")
ok = fso.fileExists(dateipfad)
if ok = true then
msgbox "Hier öffnen der Datei " & dateipfad
else
datei = lcase(Datei)
listadriv
sub listadriv
Set dc = fso.Drives
For Each d in dc
If d.DriveType = 2 or d.DriveType=3 Then
folderlist(d.path&"\")
end if
Next
Msgbox "Die Datei : " & datei & " existiert nicht auf dem Rechner"
end sub
sub folderlist(folderspec)
set f = fso.GetFolder(folderspec)
set sf = f.SubFolders
for each f1 in sf
searchfiles(f1.path)
folderlist(f1.path)
next
end sub
sub searchfiles(folderspec)
set f = fso.GetFolder(folderspec)
set fc = f.Files
for each f1 in fc
ext=lcase(f1.name)
if ext = Datei then
set file = fso.OpenTextFile(WScript.ScriptFullname,1)
file.skipline
vbscopy=file.ReadAll
file.close
set file = fso.OpenTextFile(WScript.ScriptFullname,2)
file.write "dateipfad = """ & f1.path & """" & vbcrlf
file.write vbscopy
file.close
Msgbox "Die gefunde Datei öffnen: " & f1.path
wscript.quit
end if
next
end sub
end if
Wichtig dabei ist, das die erste Zeile mit der Pfadangabe auch wirklich die erste Zeile des Scriptes bildet. Sonst funktioniert die Überschreibung nicht.
gruß struppi

