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

时间:2015-08-28 15:15:57

标签: excel vba vbscript translate

我希望将VBScript转换为VBA并在Excel模块中运行它。我翻译了VB'它过去的VBA相当,但这次我遇到了一些麻烦。我做了几次尝试(可能很多尝试)尝试自己翻译但没有成功。

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

是否可以从Excel模块执行以下操作? (作为旁注,我正在尝试直接与应用程序进行交互。我在此脚本之外有其他模块,使用OLE自动化并引用相应的COM /库引用)。但是,该应用程序缺少大量文档,并且通过所述DLL可用的方法和属性非常有限。

所以,这是我的解决方法(虽然不是首选),虽然可能很糟糕,但似乎有效。我目前有一个运行VBScript的BAT文件,它运行良好。现在我只需要在模块中运行代码。我尝试将脚本作为对象插入并运行从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}"

1 个答案:

答案 0 :(得分:3)

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

然后只需替换:

的每个实例
WScript.Sleep 1000

使用:

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

你应该没事。