Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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电子邮件,并将值和标题(发送的主题时间等)提取到Excel 此操作以前有效,但现在提示错误“尝试的操作失败。找不到对象” 文件夹的位置是“收件箱/TIBCO报告文件夹”。第行提示错误 Set olFolder = olFolder.Folders(1).Folders("Inbox").Folders("TIBCO Reports Folder") 以下是代码的一部分: Dim olApp As Object Dim olFolder As Object Di

我创建了一个宏来读取Outlook电子邮件,并将值和标题(发送的主题时间等)提取到Excel

此操作以前有效,但现在提示错误“尝试的操作失败。找不到对象”

文件夹的位置是“收件箱/TIBCO报告文件夹”。第行提示错误

Set olFolder = olFolder.Folders(1).Folders("Inbox").Folders("TIBCO Reports Folder")
以下是代码的一部分:

Dim olApp As Object
Dim olFolder As Object
Dim olMailItem As Object

Dim strTo As String
Dim strFrom As String
Dim dateSent As Variant
Dim dateReceived As Variant
Dim strSubject As String
Dim strBody As String

Dim date1 As Date
Dim date2 As Date

Dim loopControl As Variant
Dim mailCount As Long
Dim totalItems As Long
 '-------------------------------------------------------------

 '//Turn off screen updating
Application.ScreenUpdating = False

 '//Clearing worksheet content
 'Sheets("OutlookEmail").Cells.Clear

 '//Setup headers for information
Sheets("OutlookEmail").Select
Range("A1:F1").Value = Array("Subject", "From", "Date/Time Sent", "Date/Time Received", "To", "Attachment")

 '//Format columns E and F to
Columns("C:D").EntireColumn.NumberFormat = "MM/DD/YYYY HH:MM:SS"

 '//Create instance of Outlook
Set olApp = CreateObject("Outlook.Application")

 '//Select folder to extract mail from
Set olFolder = olApp.GetNamespace("MAPI")
Set olFolder = olFolder.Folders(1).Folders("Inbox").Folders("TIBCO Reports Folder")

不是答案,而是一种调试策略,它太长,无法作为评论发布

线条

Set olFolder = olFolder.Folders(1).Folders("Inbox").Folders("TIBCO Reports Folder")
很难调试。每个点(
)都尝试访问属性。其中一次尝试失败了。你不知道是哪一个,因为有三个

你能做的就是把那一行换成另一行

Set oFolder = olFolder.Folders(1)
Set oFolder = olFolder.Folders("Inbox")
Set oFolder = olFolder.Folders("TIBCO Reports Folder")

这三条线路中有一条会出故障。查看哪一个将允许您集中调试工作。

当您从Excel使用Outlook时,请按如下方式设置Outlook收件箱引用

Option Explicit
Public Sub Example()
    Dim olApp As Outlook.Application
    Dim olNS As Outlook.Namespace
    Dim Inbox As Outlook.MAPIFolder
    Dim Items As Outlook.Items
    Dim i As Long

    '// Ref to Outlook Inbox
    Set olApp = New Outlook.Application
    Set olNS = olApp.GetNamespace("MAPI")
    Set Inbox = olNS.GetDefaultFolder(olFolderInbox).Folders("Folder Name")

    Set Items = Inbox.Items

    For i = Items.count To 1 Step -1
        Debug.Print Items(i) '
'       do something with Items
    Next
End Sub
确保在VBE的“工具”>“参考”菜单中设置Microsoft Outlook对象XX.X


请参见此处的另一个示例

命名空间
文件夹
对象使用
olFoder
变量,我觉得这两个对象都可疑。我建议为每个对象创建一个单独的对象变量。(使用内置的intellisense,使用早期绑定也可能有助于调试)。嗨,Scott,我不知道这个建议是否有效。这段代码以前是有效的,能够从outlook文件夹中获取和读取电子邮件。你能给我看看你的建议吗?因为我不太熟悉VBA宏编码。感谢您是否从Excel或Outlook运行vba?请参阅中的代码以了解我所说的内容。在网络上搜索任何你感到困惑的方法。一个简单的搜索将揭示丰富的信息。这里的答案是使用早期绑定。嗨,Om3r,我正在Excel中运行vba。谢谢John。我的文件夹集=olFolder.Folders(“收件箱”)@jsioson打字错误失败了?也许它是“盒子里的”?无论出于何种原因,
文件夹(1)
缺少名为
“收件箱”
的文件夹。这似乎是一种比依赖确切名称更具原则性的方法。