Por que o 'shell' não funciona em VBscript no VS6?
-
09-06-2019 - |
Pergunta
Em uma macro para Visual Studio 6, eu queria executar um programa externo, então digitei:
shell("p4 open " + ActiveDocument.FullName)
O que me deu um erro de tempo de execução de incompatibilidade de tipo.O que acabei tendo que digitar foi isso:
Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
strResult = wshShell.Run("p4 open " + ActiveDocument.FullName)
O que está acontecendo aqui?Esse absurdo é realmente necessário ou perdi alguma coisa?
Solução
Como Lassevk apontou, VBScript não é Visual Basic.
Acredito que o único objeto integrado no VBScript é o objeto WScript.
WScript.Echo "Hello, World!"
Dos documentos
O objeto WScript é o objeto raiz da hierarquia do modelo de objeto de script do script do Windows.Ele nunca precisa ser instanciado antes de invocar suas propriedades e métodos, e está sempre disponível em qualquer arquivo de script.
Todo o resto deve ser criado através da chamada CreateObject.Alguns desses objetos são listado aqui.
O objeto Shell é um dos outro objetos que você precisa criar se quiser chamar métodos nele.
Uma ressalva é que RegExp é tipo de integrado, pois você pode instanciar um objeto RegExp como no VBScript:
Dim r as New RegExp
Outras dicas
VBScript não é Visual Basic.
Experimente:
Shell "p4 open" & ActiveDocument.FullName
O VB6 usa & para concatenar strings em vez de +, e você vai querer ter certeza de que o nome do arquivo está entre aspas no caso de espaços.Experimente assim:
Shell "p4 open """ & ActiveDocument.FullName & """"