vba - 如何更改此代码,以便任务调度程序可以将其作为 .vbs 文件运行?
问题描述
我有一些 vba 代码可以发送带有附件的电子邮件。它目前在 excel 中作为 vba 项目存在,但我希望能够将其保存为 vbs 脚本,以便我可以在每晚使用任务调度程序将其关闭。它仅适用于我假设的项目模块,因为我必须添加对 Outlook 库的引用。如果我在记事本中将脚本保存为 .vbs,它不会运行。
Option Explicit
Sub SendBasicEmail()
Dim olApp As Outlook.Application
Dim olEmail As Outlook.MailItem
Set olApp = New Outlook.Application
Set olEmail = olApp.CreateItem(olMailItem)
With olEmail
.Display
.Attachments.Add "FileDirectory"
.To = "my email"
.Subject = "Subject"
.Send
End With
End Sub
解决方案
我不知道您是否可以从服务中使用它,但如果您将此代码保存到扩展名为 .vbs 的文本文件中,此代码将与您的 Excel VBA 版本相同:
Option Explicit
Const olMailItem = 0
Sub SendBasicEmail()
Dim olApp: Set olApp = CreateObject("Outlook.Application")
Dim olEmail: Set olEmail = olApp.CreateItem(olMailItem)
With olEmail
.Display
.Attachments.Add "FileDirectory"
.To = "my email"
.Subject = "Subject"
.Send
End With
End Sub
SendBasicEmail
主要区别:
- 您不能静态引用 Outlook 库,因此您必须使用 CreateObject
- 由于缺少库,您必须查找常量的值(例如 olMailItem)
- 你不能将你的变量声明为某种类型,你可以只给它们一个名字,它们都是变体。
- 您必须直接调用此 Sub,例如在文件末尾而不是从按钮的事件处理程序