2

我一直在使用 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 想法来说将是一个很好的启动板

4

0 回答 0