从 Powershell 脚本调用 VB 脚本会在发送自动电子邮件时产生意外的运行时错误
Calling a VB Script from a Powershell script produces unexpected runtime errors when sending automated emails
我有以下 VB 脚本:
Set MSOutlook = CreateObject("Outlook.Application")
Set MailMsg = MSOutlook.CreateItem(0)
With MailMsg
.To = "xyz@gmail.com"
.Subject = "my subject"
.HTMLBody = "my text"
.Display
SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True
.Send
End With
Set MSOutlook = Nothing
Set MailMsg = Nothing
此脚本在 VB 编译器中执行时运行良好,例如 Microsoft Visual Basic for Applications
.
SendKeys
是必需的,因为我们在工作中使用了这个该死的 Titus
分类系统来对所有内容(例如电子邮件和文档)进行分类。
邮件发送正常,分类正确。
现在我尝试从以下 Powershell 脚本调用此脚本:
& cscript 'C:\Documents\sendEmail.vbs' //nologo
但是在 Powershell ISE 中或直接从 PowerShell 控制台调用 vb 脚本时收到以下错误:
cscript.exe : C:\Documents\sendEmail.vbs Microsoft VBScript runtime error: Type mismatch: 'SendKeys'
有人对此了解很多吗?为什么显然不能以这种方式使用 SendKeys 函数?
为了抢占评论,是的,我真的很想将这个 vb 功能移动到 PowerShell 脚本中,但是 TITUS 插件现在引起了各种令人头疼的问题。
谢谢
在 VBA 中,SendKeys
命令是全局 Interaction
模块的成员,因此始终在范围内。
在 VBScript 中,您需要使用 WScript.Shell
对象的 SendKeys
方法来代替:
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True
我有以下 VB 脚本:
Set MSOutlook = CreateObject("Outlook.Application")
Set MailMsg = MSOutlook.CreateItem(0)
With MailMsg
.To = "xyz@gmail.com"
.Subject = "my subject"
.HTMLBody = "my text"
.Display
SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True
.Send
End With
Set MSOutlook = Nothing
Set MailMsg = Nothing
此脚本在 VB 编译器中执行时运行良好,例如 Microsoft Visual Basic for Applications
.
SendKeys
是必需的,因为我们在工作中使用了这个该死的 Titus
分类系统来对所有内容(例如电子邮件和文档)进行分类。
邮件发送正常,分类正确。
现在我尝试从以下 Powershell 脚本调用此脚本:
& cscript 'C:\Documents\sendEmail.vbs' //nologo
但是在 Powershell ISE 中或直接从 PowerShell 控制台调用 vb 脚本时收到以下错误:
cscript.exe : C:\Documents\sendEmail.vbs Microsoft VBScript runtime error: Type mismatch: 'SendKeys'
有人对此了解很多吗?为什么显然不能以这种方式使用 SendKeys 函数?
为了抢占评论,是的,我真的很想将这个 vb 功能移动到 PowerShell 脚本中,但是 TITUS 插件现在引起了各种令人头疼的问题。
谢谢
在 VBA 中,SendKeys
命令是全局 Interaction
模块的成员,因此始终在范围内。
在 VBScript 中,您需要使用 WScript.Shell
对象的 SendKeys
方法来代替:
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.SendKeys "{TAB}{DOWN}{DOWN}{ENTER}", True