0

我试图在 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”时,它们会停止工作并且没有错误。

如何让宏在启动时运行,打开文档等,同时将它们隐藏在宏列表中?

4

1 回答 1

4

防止宏出现在宏列表中的一种方法是对它们进行结构化,以便它们至少需要一个参数。这可以是一个本质上不会实际使用的“虚拟”变量。

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

Const hiddenMacro as Boolean = True

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

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

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

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

宏列表的屏幕截图,其中不包括需要参数的宏

更新在这里我突出显示ThisDocument模块是什么,并清楚地显示所有这些代码在ThisDocumentNormal.dot 文件的模块中的位置。

另一个带有突出显示和垃圾的屏幕截图

于 2013-05-09T01:52:45.817 回答