2016-05-15 9 views
1

以下のInvokeMemberメソッドを実行するとエラーが発生します。エラーはUNKNOWN NAMEです。私はスペルを確認して、それは正しいです。 Outlookで私はEnable Macrosを信託センターに持っています。これを実現するために欠けているものはありますか?おかげコードからのOutlookマクロの呼び出し

VBコード:

olApp.GetType().InvokeMember("Run", Reflection.BindingFlags.Default Or 
            Reflection.BindingFlags.InvokeMember, 
            Nothing, olApp, New Object() {"nameOfMacro"}) 

Research

+0

なぜ管理対象コードからVBAマクロを実行する必要がありますか?なぜあなたはすべての機能を実装していないのですか? –

+0

@EugeneAstafiev、私はこれを初めて熟知しており、最初はそのことを認識していませんでした。あなたが以下を読んだら、私がちょうどそれをしたことを見ることができます - あなたのコメントのポイントは何でしたか? – OneFineDay

+0

マネージコードで必要な機能を実装する代わりに、なぜVBAマクロを呼び出す必要がありますか? –

答えて

0

まあ、InvokeMemberが動作しませんようです。答えは、マクロと同じようにコードを作成して実行することです。例:

Private Sub MoveAttachmentToFolder() 
    Dim olNs = olApp.GetNamespace("MAPI") 
    Dim subFolderA = olNs.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Parent.Folders("subFolderA") 
    Dim subFolderB = olNs.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Parent.Folders("subFolderB") 
    For Each mi As Outlook.MailItem In subFolderA.Items 
    If mi.Attachments.Count = 1 Then 
     'remember interops use 1 based arrays not zero 
     Dim fileName As String = "some path" & mi.Attachments(1).FileName 
     mi.Attachments(1).SaveAsFile(fileName) 
     mi.Move(subFolderB) 
    End If 
    Next 
End Sub 
関連する問題