如何在Windows 8.1上自动化Office 2013

时间:2014-07-22 20:27:45

标签: vb.net windows outlook automation

我正在尝试自动化Outlook发送电子邮件。我正在使用的简化代码是:

Dim outlook As Outlook.Application = Nothing

Try
    outlook = New Outlook.Application
Catch ex as Exception
    MsgBox(ex.Message)
End Try

每当我在打开Outlook的Win8.1上运行它时,我都会收到错误消息:

  

8008005服务器执行失败(HRESULT异常:0x8008005(CO_E_SERVER_EXEC_FAILURE))

研究错误表明原因是因为我打开Outlook无法创建新实例。所以我将我的代码修改为:

Dim outlook As Outlook.Application = Nothing

Try
    If Process.GetProcessesByName("OUTLOOK").Length > 0 Then
        outlook = Marshal.GetActiveObject("Outlook.Application")
    Else
        outlook = New Outlook.Application
    End If

Catch ex as Exception
    MsgBox(ex.Message)
End Try

当我运行它时,它尝试连接到现有进程,我收到错误:

  

操作不可用(HRESULT异常:0x800401E3(MK_E_UNAVAILABLE))

所以我既不能创建新实例也不能连接到现有实例。我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

CO_E_SERVER_EXEC_FAILURE表示您的应用和Outlook的安全上下文不同。 确保应用程序都没有以提升的权限运行(例如,以管理员身份运行)。