将 VBS 脚本转换为 VBA 并通过 Excel 执行

Translating VBS script to VBA and executing via Excel

我希望从 Excel 模块中将 VBScript 转换为 VBA 和 运行。过去我已经将 'VB' 翻译成它的 VBA 等价物,但这次我遇到了一点麻烦。我做了几次尝试(好吧,也许是很多次尝试)试图自己翻译这个但没有成功。

然后我搜索了 Google、我在 Google 上找到的堆栈和其他论坛,但我找到的一些示例收效甚微。

是否可以从 Excel 模块执行以下操作? (附带说明一下,我正在尝试直接与应用程序交互。我在该脚本之外还有其他模块使用 OLE 自动化并引用适当的 COM/库引用来执行此操作)。但是,该应用程序缺乏广泛的文档,并且通过所述 DLL 提供给我的方法和属性非常有限。

所以,这是我的解决方法(虽然不是首选),尽管它可能很糟糕,但它似乎有效。我目前有一个 BAT 文件,它是 运行 的 VBScript,而且效果很好。现在我只需要 运行 模块中的代码。我尝试将脚本作为一个对象插入,并 运行 设置一个从 Excel 中执行它的宏,但我收到了安全提示(这些提示并不有趣)。

非常感谢任何帮助!

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
WshShell.AppActivate "Average Terminal Emulator"
WScript.Sleep 1000
WshShell.SendKeys "%"
WshShell.SendKeys "I"
WshShell.SendKeys "Y"
WshShell.SendKeys "S"
WScript.Sleep 1000
WshShell.AppActivate "Average Terminal Emulator"
WScript.Sleep 1000
WshShell.SendKeys "0"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "M"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "C"
WshShell.SendKeys "{TAB}"
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"

SendKeys()AppActivate() 原生于 VBA,因此您可以删除所有 WshShell 内容,包括创建它的 CreateObject() 调用。

然后只需替换每个实例:

WScript.Sleep 1000

与:

Application.Wait Now() + TimeValue("00:00:01")

你应该没事。