Supportnet Computer
Planet of Tech

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.


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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: