我有一个 excel 用户表单的屏幕截图,我想将其包含在 Outlook 电子邮件中。它在我的主编程计算机上运行良好,但是当我在其他计算机上运行相同的程序时,出现上述错误。 excel 工作簿在云端,并在各种计算机上从云端(谷歌驱动器)运行。代码是:
Function outlookEmail()
Dim doc As Object, rng As Range
Application.SendKeys "(%{1068})"
DoEvents
'ActiveSheet.Paste
With CreateObject("Outlook.Application").CreateItem(0)
.display
Set doc = .GetInspector.WordEditor
doc.Range(0, 0).Paste
.To = sDetail.Cells(myRow, headerDict.item("email"))
.Subject = "documents for you"
End With
End Function
错误在设置的文档行上,如果我将其标记出来,错误会移到下一行:doc.range...
答案 0 :(得分:0)
Outlook 是一个单例。这意味着您不能同时运行应用程序的两个实例。如果 Outlook 应用程序已经在不同的安全上下文下运行,您可能会遇到麻烦。因此,我建议检查 Outlook 是否已经在运行,并确保它在相同的安全上下文下运行,以便您可以访问该实例。
您可以使用 Visual Basic GetObject
函数返回对 Application
对象的引用,该对象表示已在运行的会话。请注意,由于在任何给定时间只能运行一个 Outlook 实例,因此 GetObject
在与 Outlook 一起使用时通常没有什么用处。 CreateObject
始终可用于访问 Outlook 的当前实例或创建一个不存在的新实例。但是,您可以通过 GetObject
方法使用错误捕获来确定 Outlook 当前是否正在运行。
在 Automating Outlook from Other Office Applications 文章中阅读更多相关信息。