Excelmacros – 尝试的操作失败。 一个对象无法find

任何人都可以帮助我解决这个问题。 我已经创build了一个macros,它将读取我的Outlook电子邮件,并提取值和标题(主题时间发送等)他们去我的Excel表单之一。

这个工具已经在工作。 不过,我认为在某些地方我的Outlook有某些事情发生,代码不再工作,并提示错误“尝试的操作失败,找不到对象”。

只能通过代码读取的文件夹的位置在“收件箱/ 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") 

在此先感谢,jsioson

不是一个答案,而是一个太长的debugging策略,不能发表评论。

像一条线

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

很难debugging。 每个点( . )都试图访问一个属性。 其中一个尝试失败。 你不知道哪一个,因为有三个。

你可以做的是用行代替那一行

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

这三条线之一将会失败。 看哪一个将允许你专注于你的debugging工作。

从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 = CreateObject("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

看到另一个例子在这里https://stackoverflow.com/a/40356349/4539709