从 ThisOutlookSession 调用宏
Call a macro from ThisOutlookSession
我在 outlook 上的宏有问题。
我目前正在尝试通过批处理调用 outlook 并将其作为参数传递给我通过我在批处理中设置的环境变量获得的宏名称。但是我确实得到了我的宏的名称,但是该过程在调用函数时停止了。有人可以告诉我正确的方法吗?
VBA 这个 OutlookSession
Private Sub Application_Startup()
Dim strMacroName As String
strMacroName = CreateObject("WScript.Shell").Environment("process").Item("MacroName")
'MsgBox strMacroName
'MsgBox VarType(strMacroName)
If strMacroName <> "" Then Call strMacroName
End Sub
VBA 模块
Option Explicit
Sub macro1()
MsgBox "macro1"
End Sub
Sub macro2()
MsgBox "macro2"
End Sub
批量
Set WorkingPath=C:\Temp\Outlook
Set MacroName=%1
start OUTLOOK.EXE
Set MacroName=
Set WorkingPath=
结果
这里有几个方面...第一点是处理 Outlook 时可能存在的安全问题。您可以在 Security Behavior of the Outlook Object Model 文章中阅读更多相关信息。
另一点是,您可以通过以下方式(例如,从任何其他 Office 应用程序)调用在 ThisOutlookSession
模块中声明的 VBA 宏:
Sub test()
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
OutApp.HelloWorld
End Sub
其中 HelloWorld
sub 在 ThisOutlookSession
模块中声明如下:
Option Explicit
Public Sub HelloWorld()
MsgBox "Hello world !!"
End Sub
请注意,您可以调用 ThisOutlookSession
模块中的任何模块。无需直接访问其他模块。
我在 outlook 上的宏有问题。
我目前正在尝试通过批处理调用 outlook 并将其作为参数传递给我通过我在批处理中设置的环境变量获得的宏名称。但是我确实得到了我的宏的名称,但是该过程在调用函数时停止了。有人可以告诉我正确的方法吗?
VBA 这个 OutlookSession
Private Sub Application_Startup()
Dim strMacroName As String
strMacroName = CreateObject("WScript.Shell").Environment("process").Item("MacroName")
'MsgBox strMacroName
'MsgBox VarType(strMacroName)
If strMacroName <> "" Then Call strMacroName
End Sub
VBA 模块
Option Explicit
Sub macro1()
MsgBox "macro1"
End Sub
Sub macro2()
MsgBox "macro2"
End Sub
批量
Set WorkingPath=C:\Temp\Outlook
Set MacroName=%1
start OUTLOOK.EXE
Set MacroName=
Set WorkingPath=
结果
这里有几个方面...第一点是处理 Outlook 时可能存在的安全问题。您可以在 Security Behavior of the Outlook Object Model 文章中阅读更多相关信息。
另一点是,您可以通过以下方式(例如,从任何其他 Office 应用程序)调用在 ThisOutlookSession
模块中声明的 VBA 宏:
Sub test()
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
OutApp.HelloWorld
End Sub
其中 HelloWorld
sub 在 ThisOutlookSession
模块中声明如下:
Option Explicit
Public Sub HelloWorld()
MsgBox "Hello world !!"
End Sub
请注意,您可以调用 ThisOutlookSession
模块中的任何模块。无需直接访问其他模块。