Perché "shell" non funziona in VBscript in VS6?
-
09-06-2019 - |
Domanda
In una macro per Visual Studio 6 volevo eseguire un programma esterno, quindi ho digitato:
shell("p4 open " + ActiveDocument.FullName)
Il che mi ha dato un errore di runtime di mancata corrispondenza del tipo.Ciò che alla fine ho dovuto digitare è stato questo:
Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
strResult = wshShell.Run("p4 open " + ActiveDocument.FullName)
Che cosa sta succedendo qui?Sono davvero necessarie queste sciocchezze o mi sono perso qualcosa?
Soluzione
COME lassevk sottolineato, VBScript non è Visual Basic.
Credo che l'unico oggetto integrato in VBScript sia l'oggetto WScript.
WScript.Echo "Hello, World!"
Dai documenti
L'oggetto WScript è l'oggetto root della gerarchia del modello di oggetto host di script di Windows.Non deve mai essere istanziato prima di invocare le sue proprietà e i suoi metodi ed è sempre disponibile da qualsiasi file di script.
Tutto il resto deve essere creato tramite la chiamata CreateObject.Alcuni di questi oggetti lo sono elencati qui.
L'oggetto Shell è uno dei altro oggetti che devi creare se vuoi chiamare metodi su di esso.
Un avvertimento è che RegExp lo è una specie di integrato, in quanto puoi istanziare un oggetto RegExp in questo modo in VBScript:
Dim r as New RegExp
Altri suggerimenti
VBScript non è Visual Basic.
Prova questo:
Shell "p4 open" & ActiveDocument.FullName
VB6 utilizza & per concatenare stringhe anziché + e ti consigliamo di assicurarti che il nome del file sia racchiuso tra virgolette in caso di spazi.Provalo in questo modo:
Shell "p4 open """ & ActiveDocument.FullName & """"