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?

È stato utile?

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 & """"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top