Вопрос

В макросе для Visual Studio 6 я хотел запустить внешнюю программу, поэтому набрал:

shell("p4 open " + ActiveDocument.FullName)

Что выдало мне ошибку времени выполнения при несоответствии типов.В итоге мне пришлось напечатать следующее:

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

Что здесь вообще происходит?Действительно ли эта чепуха необходима или я что-то упустил?

Это было полезно?

Решение

Как лассевк как уже отмечалось, VBScript не является Visual Basic.

Я считаю, что единственным встроенным объектом в VBScript является объект WScript.

WScript.Echo "Hello, World!"

Из документов

Объект WScript является корневым объектом узла сценариев Windows иерархия объектной модели.Его никогда не нужно создавать перед вызовом его свойств и методов , и он всегда доступен из любого файла сценария.

Все остальное должно быть создано с помощью вызова CreateObject .Вот некоторые из этих объектов перечисленные здесь.

Объект оболочки является одним из Другое объекты, которые вам нужно создать, если вы хотите вызывать для них методы.

Одно из предостережений заключается в том, что регулярное выражение является вроде того встроенный в то, что вы можете создать экземпляр объекта RegExp следующим образом в VBScript:

Dim r as New RegExp

Другие советы

VBScript не является Visual Basic.

Попробуйте это сделать:

Shell "p4 open" & ActiveDocument.FullName

VB6 использует & для объединения строк, а не + , и вы захотите убедиться, что имя файла заключено в кавычки в случае пробелов.Попробуйте сделать это вот так:

Shell "p4 open """ & ActiveDocument.FullName & """"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top