我有一些宏和任务计划程序在指定时间启动Excel,更新一些表,从这些表创建PDF文档,然后通过电子邮件将这些PDF文档发送给选定的个人。
有时,电子邮件会卡在发件箱中,直到我打开Outlook才会发送。
以下是发送电子邮件的代码:
[
{
"parent1-prop1", "parent1-prop2",
"children": [
{"child1-prop1", "child1-prop2"},
{"child2-prop1", "child2-prop2"}
]
},
{
"parent2-prop1", "parent2-prop2",
"children": [
{"child3-prop1", "child3-prop2"},
{"child4-prop1", "child4-prop2"}
]
}
]
完成后,Private sub跳回到此工作簿中的宏,并使用CloseWorkbook Application退出MS Excel。
宏设置:
“启用所有宏”已选中
“将宏安全设置应用于已安装的加载项”已选中
我们的想法是让这个程序在清晨运行,并在他们进入工作时将这些电子邮件发送到选定个人的收件箱中。
答案 0 :(得分:0)
Outlook与任何其他Office应用程序一样,无法在服务(例如计划程序)中运行。
话虽这么说,您需要强制Outlook执行SendReceive并等待它完成。致电Namespace.SendAndReceive
或从SyncObject
集合中检索第一个Namespace.SyncObjects
对象,致电SyncObject.Start
并等待SyncObject.SyncEnd
事件触发。
答案 1 :(得分:0)
如果有人还在寻找答案;这实际上允许发送电子邮件而无需打开Outlook应用程序。
Dim mySyncObjects As Outlook.SyncObjects
Dim syc As Outlook.SyncObject
Set mySyncObjects = Outlook.Application.GetNamespace("MAPI").SyncObjects
Set syc = mySyncObjects(1)
syc.start