如何使用VBA

时间:2019-05-20 09:05:12

标签: excel vba outlook

现在,我正在尝试将本地.msg文件(如C:\ temp \ DUMMY.msg)复制到我的Outlook文件夹(如AAA)中。 我可以使用MAPI获得AAA文件夹的entryID,但是我不知道如何使用VBA将本地.msg文件移动到Outlook Dir。 (在C#中,我找到了此问与答,但似乎不适用于VBA) Import .msg file to outlook custom folder using c#

有人知道怎么做吗?

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

  • 应用程序的Visual Basic
  • Microsoft Excel 15.0对象库
  • OLE自动化
  • Microsoft Office 15.0对象库
  • Microsoft VBScript调节器Explessions 5.5
  • Microsoft脚本运行时
  • Microsoft Forms 2.0对象库

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

如果argStrEntryID =“”然后     设置MyFolder = oApp.Session.GetDefaultFolder(olFolderInbox) 其他     设置MyFolder = oApp.Session.GetFolderFromID(argStrEntryID) 如果结束

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

正如德米特里(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