当交换机加载时,我正在尝试从 Access VBA 打开 Outlook 应用程序。我打开了任务管理器,我可以看到一个 Outlook 实例出现大约 5 秒钟然后关闭,但我无法打开资源管理器窗口。我一直在尝试拼凑 VBA: Determining whether an existing Outlook instance is open 中的代码和其他来源,但它只是不起作用。有任何想法吗?
而且我想坚持使用后期绑定(bind),因此如果有人使用 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
是一个前景常数。您必须在 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
关于vba - 从 Access 中打开 Outlook 的后期绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19184650/