【问题标题】:Outlook MailItem runtime error 287 on replacing text in message body替换邮件正文中的文本时出现 Outlook MailItem 运行时错误 287
【发布时间】:2020-06-26 15:16:56
【问题描述】:

我正在从模板(经常文件)创建 Outlook 2010 消息,并替换主题、正文和收件人属性中的部分文本。

当我阅读 Body 和 To 时,出现运行时错误 287。

Sub test()
    Dim olApp As Outlook.Application
    Dim olItem As Outlook.MailItem
    Set olApp = CreateObject("Outlook.Application")
    Set olItem = olApp.CreateItemFromTemplate("C:\Users\Public\JobsTracker.V01\Templates\Template-1.oft")
    olItem.Subject = Replace(olItem.Subject, "sometext", "othertext") 'This works
    olItem.Body = Replace(olItem.Body, "sometext", "othertext")       'This raises Runtime Error 287
    olItem.Display
End Sub

【问题讨论】:

  • 你有没有得到这个工作?我也有同样的问题

标签: vba outlook


【解决方案1】:

尝试移动 olItem.Display

Sub test()
    Dim olApp As Outlook.Application
    Dim olItem As Outlook.MailItem
    Set olApp = CreateObject("Outlook.Application")
    Set olItem = olApp.CreateItemFromTemplate("C:\Users\Public\JobsTracker.V01\Templates\Template-1.oft")

    olItem.Display

    olItem.Subject = Replace(olItem.Subject, "sometext", "othertext") 'This works
    olItem.Body = Replace(olItem.Body, "sometext", "othertext")
End Sub

如果这不起作用。看起来代码不在 Outlook 中,因为您正在使用

Set olApp = CreateObject("Outlook.Application")

在运行代码之前尝试 Shell "Outlook.exe"

Set olApp = GetObject(, "Outlook.Application")

您可能需要设置一个延迟,直到 Outlook 打开。

【讨论】:

    【解决方案2】:

    在某些情况下,Outlook 可能无法完全使用

    Set olApp = CreateObject("Outlook.Application")
    

    详情看这里NameSpace.Logon Method (Outlook)

    "...首先,实例化 Outlook 应用程序对象,然后引用默认文件夹,例如收件箱。这具有初始化 MAPI 以使用默认配置文件和 使对象模型完全正常工作的副作用。

    Sub InitializeMAPI ()
    
        ' Start Outlook.
        Dim olApp As Outlook.Application
        Set olApp = CreateObject("Outlook.Application")
    
        ' Get a session object. 
        Dim olNs As Outlook.NameSpace
        Set olNs = olApp.GetNamespace("MAPI")
    
        ' Create an instance of the Inbox folder. 
        ' If Outlook is not already running, this has the side
        ' effect of initializing MAPI.
        Dim mailFolder As Outlook.Folder
        Set mailFolder = olNs.GetDefaultFolder(olFolderInbox)
    
        ' Continue to use the object model to automate Outlook.
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 2022-08-21
      相关资源
      最近更新 更多