Datei öffnen über (WshShell.Run)
Hallo zusammen,
bin schon ein wenig verzweifelt auf der Suche nach meinem Fehler.
'So geht's einwandfrei:
WshShell.Run """C:\Alle Dateien\Unterlagen\4915\Datei_4915.pdf""", 0
'So sollte es gehen:
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim sPfad, sDatei, sDateiLink
sPfad = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet.CurrentRecordSynchronized.GetContentsByName("PfadID")
sDatei = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet.CurrentRecordSynchronized.GetContentsByName("Datei")
sDateiLink = "C:\Dateien\Alle Unterlagen\" & sPfad & "\" & sDatei
'MsgBox CStr(sDateiLink), vbInformation, cRM.AppTitle *
'WScript.Quit
' *Nur zur Prüfung: Hier wird der Pfad komplett und korrekt ausgegeben
On Error Resume Next
WshShell.Run """CStr(sDateiLink)""", 0
' Das funktioniert nicht, weder mit drei, noch mit zwei,noch mit einem oder mit gar keinem Anführungszeichen
' Das ebenso nicht -> WshShell.Run "" & CStr(sDateiLink) & "", 0
Wo liegt mein Fehler? Was mach ich falsch ?
Herzlichen Dank und viele Grüße
Robert
bin schon ein wenig verzweifelt auf der Suche nach meinem Fehler.
'So geht's einwandfrei:
WshShell.Run """C:\Alle Dateien\Unterlagen\4915\Datei_4915.pdf""", 0
'So sollte es gehen:
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim sPfad, sDatei, sDateiLink
sPfad = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet.CurrentRecordSynchronized.GetContentsByName("PfadID")
sDatei = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet.CurrentRecordSynchronized.GetContentsByName("Datei")
sDateiLink = "C:\Dateien\Alle Unterlagen\" & sPfad & "\" & sDatei
'MsgBox CStr(sDateiLink), vbInformation, cRM.AppTitle *
'WScript.Quit
' *Nur zur Prüfung: Hier wird der Pfad komplett und korrekt ausgegeben
On Error Resume Next
WshShell.Run """CStr(sDateiLink)""", 0
' Das funktioniert nicht, weder mit drei, noch mit zwei,noch mit einem oder mit gar keinem Anführungszeichen
' Das ebenso nicht -> WshShell.Run "" & CStr(sDateiLink) & "", 0
Wo liegt mein Fehler? Was mach ich falsch ?
Herzlichen Dank und viele Grüße
Robert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 245345
Url: https://administrator.de/forum/datei-oeffnen-ueber-wshshell-run-245345.html
Ausgedruckt am: 22.04.2025 um 07:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo Robert,
doppelte Anführungszeichen innerhalb einer Stringzeichenfolge werden zu einem einzigen, deswegen so:
oder so, wenn dir Anführungszeichen zählen nicht liegt 
Stell dir einfach vor was du in einer Konsole eingeben müsstest um eine Datei mit einem Leerzeichen im Pfad zu öffnen. Und da ein "" in VBS eine Leere Zeichenfolge ergibt ein """" aber ein einzelnes " sollte jetzt klar sein warum es bei dir nicht geklappt hat 
Grüße Uwe
doppelte Anführungszeichen innerhalb einer Stringzeichenfolge werden zu einem einzigen, deswegen so:
WshShell.Run """" & sDateiLink & """", 0
WshShell.Run chr(34) & sDateiLink & chr(34), 0
Grüße Uwe
Hallo Robert
Ein Stringliteral muss immer in einem Paar umschließenden Anführungszeichen stehen (die anschließend nicht im Stringwert zu finden sind).
Wenn du Anführungszeichen in einem String darstellen willst, müssen diese verdoppelt werden.
Beispiel: Test soll in Anführungszeichen stehen ...
Für ein einzelnes Anführungszeichen brauchst du also das umschließende Paar für das Stringliteral, sowie das verdoppelte als Wert.
Wenn du nun eine Variable mit Anführungszeichen verknüpfen willst, benötigst du das &
Ich hoffe das trägt zum Verständnis bei
Grüße
rubberman
Das es 4 sein müssten, wäre ich nicht drauf gekommen.
Ich versuch's mal zu erklären.Ein Stringliteral muss immer in einem Paar umschließenden Anführungszeichen stehen (die anschließend nicht im Stringwert zu finden sind).
s = "text"
Wenn du Anführungszeichen in einem String darstellen willst, müssen diese verdoppelt werden.
Beispiel: Test soll in Anführungszeichen stehen ...
s = "Das ist ein ""Test"""
Für ein einzelnes Anführungszeichen brauchst du also das umschließende Paar für das Stringliteral, sowie das verdoppelte als Wert.
s = """"
Wenn du nun eine Variable mit Anführungszeichen verknüpfen willst, benötigst du das &
s2 = """" & s1 & """"
Ich hoffe das trägt zum Verständnis bei
Grüße
rubberman