私は 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 のアイデアの優れた出発点になると思います。