在Outlook 2010中,VBA运行一个名称作为参数传递的宏

Jef*_*344 4 outlook vba

我在Windows 7中使用VBA编写的Outlook 2010中,并希望将宏(或子例程)的名称作为字符串变量传递给另一个子例程,并让该例程运行宏.在Word中,您可以使用Application.Run MacroName执行此操作:= strMacroName其中strMacroName是具有宏名称的字符串变量.这种方法在Outlook 2010中不起作用.我怎样才能完成同样的事情?我试过了

  1. Call Application.strMacroName
  2. Call strMacroName
  3. strMacroName 在自己的路线上
  4. Outlook.Application.strMacroName

这些都没有奏效.

我刚刚升级到Outlook 2010,因此无法再使用键盘快捷键来运行自定义代码来处理电子邮件.因此,要恢复该功能的某些版本,我已创建代码以显示包含最常见宏的对话框.代码相当干净,随着时间的推移进行修改并传递我想要运行的宏的名称,但我曾经能够在一个命令(Application.Run MacroName:=strMacroName)中运行该例程.

现在我必须包含一个long switch语句来完成同样的事情.不是那么简单.

谢谢!

Mat*_*don 7

CallByName 似乎是唯一的出路.

使用此代码ThisOutlookSession:

Public Sub TestFoo()
    Dim testClass As New TestClass1
    CallByName testClass, "TestMethod1", VbMethod
End Sub
Run Code Online (Sandbox Code Playgroud)

这段代码在TestClass1:

Public Sub TestMethod1()
    MsgBox "huzzah!"
End Sub
Run Code Online (Sandbox Code Playgroud)

呼叫ThisOutlookSession.TestFoo为您提供预期的消息框.