将 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")
你应该没事。
我希望从 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")
你应该没事。