Vba 如何更改此代码,使it任务计划程序可以将其作为.vbs文件运行?
我有一些vba代码,可以发送带有附件的电子邮件。它目前以vba项目的形式存在于excel中,但我希望能够将其保存为vbs脚本,这样我就可以使用task scheduler每晚启动它。它只在我假设的项目模块中起作用,因为我必须添加对outlook库的引用。如果我在记事本中将脚本保存为.vbs,它将不会运行Vba 如何更改此代码,使it任务计划程序可以将其作为.vbs文件运行?,vba,outlook,Vba,Outlook,我有一些vba代码,可以发送带有附件的电子邮件。它目前以vba项目的形式存在于excel中,但我希望能够将其保存为vbs脚本,这样我就可以使用task scheduler每晚启动它。它只在我假设的项目模块中起作用,因为我必须添加对outlook库的引用。如果我在记事本中将脚本保存为.vbs,它将不会运行 Option Explicit Sub SendBasicEmail() Dim olApp As Outlook.Application Dim olEmail As Ou
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
Outlook或任何其他Office应用程序不能在服务(如调度器)中使用。我不知道您是否可以从服务中使用它,但如果您将此代码保存到扩展名为.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)
- 您不能将变量声明为特定类型,您只能给它们一个名称,它们都是变量
- 您必须直接调用此子项,例如,在文件末尾调用,而不是从按钮的事件处理程序调用