从宏列表中隐藏AutoExec()和AutoNew()宏但仍然运行它们?

时间:2013-05-09 00:19:11

标签: vba ms-word ms-office hide

我正在尝试在Word启动或打开另一个文档时保持某些宏运行,但我希望将它们从用户可以访问的宏列表中删除(alt + f8)。

我尝试添加'私有'而不是'公开',但这会因某些原因阻止它们完全运行。

Public Sub AutoExec()
    DisplayStylesMenu
End Sub

Public Sub AutoNew() 
    DisplayStylesMenu
End Sub

Public Sub AutoOpen() 
     DisplayStylesMenu
End Sub

Public Sub DisplayStylesMenu()
    ' Opens the Formatting task pane (Style window)
    Application.TaskPanes(wdTaskPaneFormatting).Visible = True

    ' Docks the window on the right
    Application.CommandBars("Styles").Position = msoBarRight
End Sub

目前,AutoExec,AutoNew和AutoOpen都出现在可公开访问的宏列表中(因为'public'前缀),但是当向其中任何一个添加'private'时,它们会停止工作并且没有错误。

如何在启动时保持宏运行,打开文档等,同时将其隐藏在宏列表中?

1 个答案:

答案 0 :(得分:4)

防止宏显示在宏列表中的一种方法是构造它们,以便它们至少需要一个参数。这实际上可能是一个“虚拟”变量,实际上不会被使用。

因此,在模块中声明一个常量,如下所示:

Const hiddenMacro as Boolean = True

我使用了布尔值,但你可以使用String,Integer,Long等。

然后,在您的AutoNew子例程中,将此变量添加为必需参数:

Sub AutoNew(hiddenMacro as Boolean)
    MsgBox "Hello, world!", vbInformation
End Sub

需要参数的宏不会出现在宏列表中:

Screenshot of macro list which excludes macros that require arguments

更新在此,我将重点介绍ThisDocument模块的内容,并在Normal.dot文件的ThisDocument模块中清楚地显示所有代码所属的位置。< / p>

Another screenshot with highlighting and junk