Vba 从Access延迟绑定打开Outlook

Vba 从Access延迟绑定打开Outlook,vba,ms-access,outlook,Vba,Ms Access,Outlook,我正在尝试在交换机加载时从Access VBA打开Outlook应用程序。我打开了任务管理器,我可以看到Outlook的一个实例出现大约5秒钟,然后关闭,但我无法打开资源管理器窗口。我一直在尝试将来自和其他来源的代码拼凑在一起,但它就是不起作用。有什么想法吗 我想坚持使用后期绑定,这样如果有人使用XP打开,我就不必担心对象库了 Function OpenEmail() Dim olApp As Object ' Outlook.Application Dim olFolderInbox As

我正在尝试在交换机加载时从Access VBA打开Outlook应用程序。我打开了任务管理器,我可以看到Outlook的一个实例出现大约5秒钟,然后关闭,但我无法打开资源管理器窗口。我一直在尝试将来自和其他来源的代码拼凑在一起,但它就是不起作用。有什么想法吗

我想坚持使用后期绑定,这样如果有人使用XP打开,我就不必担心对象库了

Function OpenEmail()

Dim olApp As Object ' Outlook.Application
Dim olFolderInbox As Object
Dim objExplorer As Object

On Error Resume Next

Set olApp = GetObject(, "Outlook.Application")

If olApp Is Nothing Then
    MsgBox "Outlook is not Open"
    Set olApp = CreateObject("Outlook.Application")
End If

Set objExplorer = CreateObject("Outlook.MAPIFolder")
Set objExplorer = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)

objExplorer.Activate

'Set olApp = Nothing

End Function

Outlook是唯一的MS Office应用程序,
GetObject
执行与
CreateObject
相同的操作。与其他MS Office应用程序不同,
CreateObject
不会创建Outlook的多个实例

另外,
olFolderInbox
是outlook常量。您必须在ACCESS中定义它

试试这个

Const olFolderInbox As Long = 6

Sub Sample()
    Dim olApp As Object
    Dim objNS As Object
    Dim olFolder As Object

    Set olApp = CreateObject("Outlook.Application")
    Set objNS = olApp.GetNamespace("MAPI")
    Set olFolder = objNS.GetDefaultFolder(olFolderInbox)

    With olFolder
        '~~> Do what you want
    End With
End Sub

添加了
。在中显示
。工作起来很有魅力。我真的很感激!