Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel “从共享邮箱Outlook子文件夹提取”不起作用_Excel_Vba_Outlook - Fatal编程技术网

Excel “从共享邮箱Outlook子文件夹提取”不起作用

Excel “从共享邮箱Outlook子文件夹提取”不起作用,excel,vba,outlook,Excel,Vba,Outlook,我使用下面的代码从收件箱和子文件夹/子文件夹(如果有)中提取主题。在提取收件箱和子文件夹的主邮箱上工作正常 我在outlook中几乎没有共享邮箱。当我尝试调用共享邮箱时,它只提取共享邮箱收件箱,而不提取子文件夹 我的密码有问题吗?或者我要补充什么 Public xlSht As Excel.Worksheet Sub DocumentFolders(objParent As Folder, lRow As Long) Dim objItm As Object Dim objFolder As

我使用下面的代码从收件箱和子文件夹/子文件夹(如果有)中提取主题。在提取收件箱和子文件夹的主邮箱上工作正常

我在outlook中几乎没有共享邮箱。当我尝试调用共享邮箱时,它只提取共享邮箱收件箱,而不提取子文件夹

我的密码有问题吗?或者我要补充什么

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
我尝试此方法“尝试关闭代理文件夹的缓存-取消选中“Exchange帐户属性”对话框的“高级”选项卡上的“下载共享文件夹”复选框”。但这会花费很长时间,过一段时间会挂起

试着释放内存

子文档文件夹(对象不作为文件夹,lRow作为长文档,xlSht作为Excel.Worksheet)
' ...
lRow=lRow+1
'显然,objItm在内存中不会被下一个objItm替换
'在循环中释放此内存可能有助于防止Excel挂起
设置objItm=Nothing
下一个
' ...
如果不够,则减少运行中处理的文件夹数

Set objParent=Ns.GetSharedDefaultFolder(olShareName,olFolderInbox)//Inbox
设置objParent=objParent.folders(“收件箱下一级的任何子文件夹的名称”)

这是否回答了您的问题@尼顿我尝试此方法“尝试关闭代理文件夹的缓存-取消选中“Exchange帐户属性”对话框的“高级”选项卡上的“下载共享文件夹”复选框”。但这会花费很长时间,过一段时间会挂起。有什么建议吗?如何解决这个问题?如果您确认子文件夹现在可用,我建议您可以尝试多个摘录,可能引用收件箱下一级的每个子文件夹。@niton我可以按照您的建议引用任何示例吗?我应该在上面的代码中添加什么?谢谢@niton的建议。我想只提取超过1个月的电子邮件。可能吗?有我可以参考的参考资料吗?谢谢。搜索“日期限制项目”。