【发布时间】:2020-03-31 15:41:11
【问题描述】:
我使用下面的代码从收件箱和子文件夹/子文件夹中提取主题(如果有)。在我提取收件箱和子文件夹的主邮箱上工作正常。
我在 Outlook 中的共享邮箱很少。当我尝试调用共享邮箱时,它只提取了共享邮箱 INBOX 而不是子文件夹。
我的代码有什么问题吗?或者我要补充什么?
Public xlSht As Excel.Worksheet
Sub DocumentFolders(objParent As Folder, lRow As Long)
Dim objItm As Object
Dim objFolder As Folder
On Error Resume Next
With xlSht
For Each objItm In objParent.Items
.Cells(lRow, 1) = objParent
.Cells(lRow, 2) = objItm.Subject
.Cells(lRow, 3) = objItm.ReceivedTime
lRow = lRow + 1
Next
End With
On Error GoTo 0
If objParent.Folders.Count > 0 Then
For Each objFolder In objParent.Folders
Call DocumentFolders(objFolder, lRow)
Next
End If
End Sub
Sub ExportInformation()
Dim xlApp As Excel.Application
Dim xlWb As Excel.Workbook
Dim Ns As Outlook.Namespace
Dim olShareName As Outlook.Recipient
Set outlookApp = New Outlook.Application
Set Ns = outlookApp.GetNamespace("MAPI")
Set olShareName = Ns.CreateRecipient("xxxxx@xxx.com") '// Owner's email address
olShareName.Resolve
Set objParent = Ns.GetSharedDefaultFolder(olShareName, olFolderInbox) '// Inbox
Set xlApp = New Excel.Application
Set xlWb = xlApp.Workbooks.Add
Set xlSht = xlWb.Sheets(1)
With xlSht
.Cells(1, 1) = "Folder"
.Cells(1, 2) = "Subject"
.Cells(1, 3) = "Received Time"
End With
Call DocumentFolders(Session.GetSharedDefaultFolder(olShareName, olFolderInbox), 2)
xlApp.Visible = True
Set xlSht = Nothing
Set xlWb = Nothing
Set xlApp = Nothing
End Sub
【问题讨论】:
-
@niton 我尝试这种方法“尝试关闭代理文件夹的缓存 - 取消选中 Exchange 帐户属性对话框的“高级”选项卡上的“下载共享文件夹”复选框。但它需要永远,并在一段时间后挂起。有什么建议可以解决这个问题吗?
-
如果您已确认子文件夹现在可用,我建议您可以尝试多次提取,也许在收件箱下一级引用每个子文件夹。
-
@niton 我可以按照您的建议参考任何示例吗?我应该在上面的代码中添加什么?