【问题标题】:Calling a .vbs script from Excel VBA从 Excel VBA 调用 .vbs 脚本
【发布时间】:2012-10-19 10:42:30
【问题描述】:

是否可以在需要时从 VBA 代码调用 .vbs 脚本?如果可能的话,你能给我一个示例代码吗?

【问题讨论】:

标签: vbscript


【解决方案1】:

运行文件:

Shell "wscript c:\null\a.vbs", vbNormalFocus

如果 VBS 想要使用控制台,请将 wscript 替换为 cscript

或者您可以添加对Microsoft Script Control的引用,并直接与VBScript运行时交互以执行VBS代码、程序等;

Dim scr As ScriptControl: Set scr = New ScriptControl
scr.Language = "VBScript"
scr.AddCode "sub T: msgbox ""All Hail Cthulhu"": end sub"
scr.Run "T"

【讨论】:

  • 嗨,亚历克斯,我想从 VBA 调用一个 .vbs 文件...那该怎么做呢?这是我的问题..你能澄清你的建议吗?
  • Sub test() Dim scr As ScriptControl: Set scr = New ScriptControl scr.Language = "VBScript" scr.AddCode "sub T: msgbox ""All Hail Cthulhu"": end sub" scr.运行“T”结束子
  • 出现错误:编译器错误:“未定义用户定义类型”
  • shell 行运行 vbs ... 要避免 User-defined type not defined,您必须在 VBA IDE 中单击 tools -> references &勾选 Microsoft Script Control 1.0
  • Alex,您介意在您的答案中添加更多细节吗?该对象也可以使用set scr = CreateObject("MSScriptControl.ScriptControl") 创建,这是某些环境中的唯一选项。
【解决方案2】:

我只想补充 Alex 的回答,在某些环境中,对象必须按以下方式创建:

set scr = CreateObject("MSScriptControl.ScriptControl")

如果亚历克斯在他的答案中添加了这个,我会删除这个。

【讨论】:

    【解决方案3】:

    试试这样的东西

    ChDir ThisWorkbook.Path
    Shell "wscript " & ThisWorkbook.Path & "\your.vbs", vbNormalFocus
    

    它帮助了我。

    【讨论】:

      【解决方案4】:

      如果您的路径名包含-,您可能想要使用""" 对于我来说,以下解决了这个问题:

      Shell "cscript """ & ActiveWorkbook.Path & """\your.vbs", vbNormalFocus
      

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 2014-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多