【问题标题】:How to import local .msg file to Outlook folder using VBA?如何使用 VBA 将本地 .msg 文件导入 Outlook 文件夹?
【发布时间】:2019-10-06 15:02:02
【问题描述】:

我正在尝试将本地 .msg 文件(如 C:\temp\DUMMY.msg)复制到 Outlook 文件夹(如 AAA)。

我可以使用 MAPI 获取 AAA 文件夹的 entryID。

我找到了Import .msg file to outlook custom folder using c#

我已经导入了下面写的库。

  • Visual Basic 应用程序
  • Microsoft Excel 15.0 对象库
  • OLE 自动化
  • Microsoft Office 15.0 对象库
  • Microsoft VBScript 正则表达式 5.5
  • Microsoft 脚本运行时
  • Microsoft Forms 2.0 对象库

我将目标 Outlook 文件夹 obj 分配给 MyFolder。

If argStrEntryID = "" Then
    Set MyFolder = oApp.Session.GetDefaultFolder(olFolderInbox)
Else
    Set MyFolder = oApp.Session.GetFolderFromID(argStrEntryID)
End If

如何将本地 .msg 文件移动到 Outlook 文件夹?

【问题讨论】:

    标签: excel vba outlook


    【解决方案1】:

    您可以使用Namespace.OpenSharedItem 指定MSG 文件的完全限定文件名,然后复制(MailItem.Copy)或移动它(MailItem.Move)。

    【讨论】:

    • 非常感谢!使用 Namespace.OpensharedItem 很好,我使用下面编写的代码完成了将本地文件移动到 Outlook 目录。
    【解决方案2】:

    正如 Dmitry 所提到的,我使用了 Namespace.OpensharedItem 并且它有效。


    Dim Filename As String
    Filename = "C:\temp\DUMMY.msg"
    
    Dim DestOlDirID As String
    DesOlDirID = "(entry id value)"
    
    Dim oApp
    Set oApp = CreateObject("Outlook.Application")
    
    'Get Namespace object
    Dim oNamespace As Namespace
    Set oNamespace = oApp.GetNamespace("MAPI")
    
    'assign outlook folder by entry ID
    Dim oFolder As Folder
    Set oFolder = oApp.Session.GetFolderFromID(DesOlDirID)
    
    Dim oItem As Object
    Set oItem = oNamespace.OpenSharedItem(Filename)
    
    'actually this move method did not delete original .msg local file. it works like copy.
    oItem.Move oFolder
    
    Set oItem = Nothing
    Set oFolder = Nothing
    Set oNamespace = Nothing
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2014-10-25
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 2015-09-03
      相关资源
      最近更新 更多