Pregunta

En una macro para Visual Studio 6, quería ejecutar un programa externo, así que escribí:

shell("p4 open " + ActiveDocument.FullName)

Lo que me dio un error de tiempo de ejecución que no coincide con el tipo.Lo que terminé teniendo que escribir fue esto:

Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
strResult = wshShell.Run("p4 open " + ActiveDocument.FullName)

¿Que esta pasando aqui?¿Es realmente necesaria esa tontería o me he perdido algo?

¿Fue útil?

Solución

Como lassevk Como se señaló, VBScript no es Visual Basic.

Creo que el único objeto integrado en VBScript es el objeto WScript.

WScript.Echo "Hello, World!"

De los documentos

El objeto WScript es el objeto raíz del host de scripts de Windows jerarquía del modelo de objetos.Nunca necesita ser instanciado antes de invocar su propiedades y métodos, y siempre está disponible desde cualquier archivo de script.

Todo lo demás debe crearse mediante la llamada CreateObject.Algunos de esos objetos son listado aquí.

El objeto Shell es uno de los otro objetos que necesita crear si desea llamar a métodos en él.

Una advertencia es que RegExp es algo así como incorporado, en el sentido de que puede crear una instancia de un objeto RegExp como este en VBScript:

Dim r as New RegExp

Otros consejos

VBScript no es Visual Basic.

Prueba esto:

Shell "p4 open" & ActiveDocument.FullName

VB6 usa & para concatenar cadenas en lugar de +, y querrás asegurarte de que el nombre del archivo esté entre comillas en caso de espacios.Pruébalo así:

Shell "p4 open """ & ActiveDocument.FullName & """"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top