我想为Outlook2003写一个外接程序,当Outlook打开时,搜索一个名为DMSDataStore的数据文件是否存在,如果它不存在,将安装该数据文件。我已经设法使用VB6创建了外接程序,当我打开Outlook时它就会运行。然而,我还没有找到搜索数据文件存在的最好/最简单的方法。如果数据文件存在,则可以在Outlook中的用户邮箱下看到该数据文件,这与归档文件夹非常相似。我希望能够通过名称搜索它,这是DMSDataFile。
我试过了--设置tmpInbox = parentFolder.Folders("DMSDataFile")如果数据文件存在,这个方法可以正常工作,但是如果数据文件不存在,就会抛出一个错误。我可以创建一个错误处理程序,然后安装数据文件,但这似乎不是一种非常整洁的操作方式。
我想我可能不得不递归地搜索数据文件。谁能让我知道使用数据文件的名称搜索数据文件的最佳/最简单的方法是什么,并给我一些代码来做这件事。
发布于 2010-01-04 23:01:57
这是一个来自VBA的示例。
Public Function GetFolder(strFolderPath As String) As Object ''MAPIFolder
'' strFolderPath needs to be something like
'' "Public Folders\All Public Folders\Company\Sales" or
'' "Personal Folders\Inbox\My Folder"
Dim apOL As Object ''Outlook.Application
Dim objNS As Object ''Outlook.NameSpace
Dim colFolders As Object 'Outlook.Folders
Dim objFolder As Object 'Outlook.MAPIFolder
Dim arrFolders() As String
Dim i As Long
On Error GoTo TrapError
strFolderPath = Replace(strFolderPath, "/", "\")
arrFolders() = Split(strFolderPath, "\")
Set apOL = CreateObject("Outlook.Application")
Set objNS = apOL.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = objNS.Folders.Item(arrFolders(0))
If Not objFolder Is Nothing Then
For i = 1 To UBound(arrFolders)
Set colFolders = objFolder.Folders
Set objFolder = Nothing
Set objFolder = colFolders.Item(arrFolders(i))
If objFolder Is Nothing Then
Exit For
End If
Next
End If
On Error GoTo TrapError
Set GetFolder = objFolder
Set colFolders = Nothing
Set objNS = Nothing
Set apOL = Nothing
Exit_Proc:
Exit Function
TrapError:
MsgBox Err.Number & ": " & Err.Description
End Functionhttps://stackoverflow.com/questions/1999697
复制相似问题