【问题标题】:Getting Run-Time Error '-2147221233 (8004010f)', then getting Run-time error '462' The remote server machine does not exist or is unavailable出现运行时错误“-2147221233 (8004010f)”,然后出现运行时错误“462”远程服务器机器不存在或不可用
【发布时间】:2018-09-13 02:37:15
【问题描述】:

以下代码曾经可以工作,但突然开始产生上述错误消息。它旨在从文件夹中的每封电子邮件中获取联系方式,然后发送一封新电子邮件。我已经运行了错误检查,失败的行是: 设置 objFolder = objFolder.Folders("收件箱").Folders("Test") 代码如下:

Sub ListMailsInFolder()

    Dim objNS As Outlook.Namespace
    Dim objFolder As Outlook.MAPIFolder
    Dim Lines() As String

    Set objNS = GetNamespace("MAPI")
    Set objFolder = objNS.Folders.GetFirst ' folders of your current account
    Set objFolder = 
 objFolder.Folders("Inbox").Folders("Test")
 Worksheets("Sheet2").Cells.ClearContents
 a = 1
    For Each Item In objFolder.Items
        If TypeName(Item) = "MailItem" Then
            Item.Display
            Worksheets("Sheet2").Cells(1, a).Value = 
 Item.Body
            Item.Close 1
            a = a + 1
            Debug.Print Item.ConversationTopic
        End If
    Next

 For x = 1 To 208
 If Worksheets("Sheet2").Cells(1, x) = "" Then
 Exit For
 End If
  Set OutApp = CreateObject("Outlook.Application")
  Set objOutlookMsg = OutApp.CreateItem(olMailItem)

  Set Recipients = objOutlookMsg.Recipients
  Set objOutlookRecip = 
 Recipients.Add("<email removed for forum>")
  objOutlookRecip.Type = 1

  objOutlookMsg.SentOnBehalfOfName = 
 "<email removed for forum>"
  objOutlookMsg.Subject = "Fleet Insurance"
  objOutlookMsg.Body = "Testing this macro" & vbCrLf & 
 vbCrLf & "First Name: " & Worksheets("Sheet3").Cells(7, x) & vbCrLf & "Last Name: " & Worksheets("Sheet3").Cells(10, x) & vbCrLf & "Email Address: " & Worksheets("Sheet3").Cells(14, x)
  'Fleet client relationship team in signature
  'Resolve each Recipient's name.
  For Each objOutlookRecip In objOutlookMsg.Recipients
    objOutlookRecip.Resolve
  Next
  objOutlookMsg.Send
  'objOutlookMsg.Display

  Set OutApp = Nothing
  Next x

End Sub

【问题讨论】:

  • 有时(并非总是),错误 message 比它的 number 更有用。
  • 我还建议从帖子中删除 Daniel 和 Simon 的实际电子邮件地址。
  • 该错误消息基本上是“找不到对象”。你真的有一个名为“Test”的文件夹吗?
  • 感谢您的建议。
  • 仅供参考,我已将帖子标记为版主,以便将电子邮件地址从修订版 1 中删除,因此就像它们从一开始就不存在一样:)

标签: excel vba outlook


【解决方案1】:

要可靠地引用默认收件箱:

Option Explicit

Sub ListMailsInDefaultAccountFolder()

    Dim objNS As Namespace
    Dim objFolder As Folder
    Dim defInboxFolder As Folder

    Dim itmCount As Long
    Dim i As Long

    Set objNS = GetNamespace("MAPI")

    Set defInboxFolder = objNS.GetDefaultFolder(olFolderInbox)
    Set objFolder = defInboxFolder.Folders("Test")

    itmCount = objFolder.Items.Count

    For i = 1 To itmCount
        Debug.Print objFolder.Items(i).Subject
    Next

End Sub

【讨论】:

    【解决方案2】:

    错误代码是MAPI_E_NOT_FOUND。确保收件箱下存在名为“Test”的文件夹。

    【讨论】:

      【解决方案3】:

      您要查找的文件夹很可能丢失(不是根据您的 Outlook,而是根据您的代码)。发生这种情况的一个原因是如果您的收件箱更改名称,如果您不使用英语 Outlook,它可以这样做。试试这个:

      Set objFolder = objNS.Folders.GetFirst
      For Each folder In objFolder.Folders
          Debug.Print folder.Name
      Next
      

      它列出了收件箱应该在的所有文件夹。希望您能找到可以识别为收件箱的东西。在您的代码中替换该名称。

      【讨论】:

        猜你喜欢
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多