robertka
Goto Top

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

Content-Key: 245345

Url: https://administrator.de/contentid/245345

Printed on: April 23, 2024 at 14:04 o'clock

Member: colinardo
Solution colinardo Aug 01, 2014 updated at 15:28:20 (UTC)
Goto Top
Hallo Robert,
doppelte Anführungszeichen innerhalb einer Stringzeichenfolge werden zu einem einzigen, deswegen so:
WshShell.Run """" & sDateiLink & """", 0
oder so, wenn dir Anführungszeichen zählen nicht liegt face-wink
WshShell.Run chr(34) & sDateiLink & chr(34), 0
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 face-smile

Grüße Uwe
Member: RobertKa
RobertKa Aug 01, 2014 at 15:25:30 (UTC)
Goto Top
Hallo Uwe,

vielen, vielen Dank.Geht einwandfrei. Das es 4 sein müssten, wäre ich nicht drauf gekommen.

Da zähl ich gerneface-smile

Viele Grüße

Robert
Member: rubberman
rubberman Aug 01, 2014 updated at 16:01:26 (UTC)
Goto Top
Hallo Robert

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 face-wink

Grüße
rubberman
Member: RobertKa
RobertKa Aug 01, 2014 at 19:44:11 (UTC)
Goto Top
Hallo rubberman,

dass es irgendwie mit den Anführungszeichen zu tun hat,hatte ich schon so im Gefühl. Aber die Erklärung fehlte mir. Der Grund ist, dass ich das eigentlich so ein wenig nebenbei mache und dadurch die Grundlagen fehlen. Aber jetzt ist mir das klar.

Deswegen nochmals vielen Dank für Deine ausführliche Erklärung und auch die von Uwe.

Schönen Abend und ein schönes Wochenende!

Viele Grüße

Robert