2

私は R の RDCOMClient パッケージを使用して Excel ファイルを操作してきましたが、非常に役に立ちました。

今、私は Outlook の使用に挑戦しており 、ここのスレッドを使用してメールを送信する方法を学びました。

ただし、R の RDCOMClient を使用して受信トレイからメッセージを取得したいと考えています。

通常、RDCOMClient で使用するために VBA コードを変換できますが、適切な構文で問題が発生する場合があります。

つまり、いつ Object[["example"]] または Object$example(); を使用してオブジェクトのメンバーにアクセスするか。Object$example(test$()) のようなものを作る方法。

より具体的には、VBA を使用してメールを取得する際に、MSDNから次のコードをどのように変換しますか?

    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