我一直在使用 R 的 RDCOMClient 包来操作 Excel 文件,它提供了巨大的帮助。
现在我开始尝试使用 Outlook,并 在此处学习了如何使用该线程发送邮件
但是,我想使用 R 的 RDCOMClient 从我的收件箱中检索消息。
一般来说,我们可以将 VBA 代码转换为与 RDCOMClient 一起使用,尽管在某些情况下使用正确的语法会遇到问题。
即何时使用 Object[["example"]] 或 Object$example() 访问对象的成员;以及如何使 Object$example(test$()) 之类的东西起作用。
更具体地说,如何将MSDN 中的以下代码转换为使用 VBA 检索邮件?
Dim outlookNameSpace As Outlook.NameSpace
Dim inbox As Outlook.MAPIFolder
Dim WithEvents items As Outlook.Items
Private Sub ThisAddIn_Startup() Handles Me.Startup
outlookNameSpace = Me.Application.GetNamespace("MAPI")
inbox = _
outlookNameSpace.GetDefaultFolder( _
Outlook.OlDefaultFolders.olFolderInbox)
items = inbox.Items
End Sub
Private Sub Items_ItemAdd(ByVal item As Object) Handles items.ItemAdd
Dim filter As String = "USED CARS"
If TypeOf (item) Is Outlook.MailItem Then
Dim mail As Outlook.MailItem = item
If mail.MessageClass = "IPM.Note" And _
mail.Subject.ToUpper.Contains(filter.ToUpper) Then
mail.Move(outlookNameSpace.GetDefaultFolder( _
Outlook.OlDefaultFolders.olFolderJunk))
End If
End If
End Sub
在这里,我在 R 中做了一些尝试,例如:
OL = COMCreate("Outlook.Application")
outlookNameSpace = OL$GetNameSpace("MAPI")
遵循VBA代码中呈现的逻辑的想法。但是,我遇到了上面提到的访问成员和方法的语法不容易翻译的问题。
subpath = OL$OlDefaultFolders()$olFolderInbox()
##Or something like
subpath = OL$DefaultFolders()
subpath2 = subpath$olFolderInbox()
最终,我的问题(以及其他人可能提出的问题)最好将 MSDN 示例从 VBA 直接转换为 R,或者链接到综合教程。
为了记录,我已经阅读了关于 RDCOMClient 的这个很棒的教程
我很感激你能给我的任何帮助,我认为这个主题对于一般 VBA -> RDCOM 想法来说将是一个很好的启动板