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

マクロがマクロのリストに表示されないようにする 1 つの方法は、少なくとも 1 つの引数を必要とするようにマクロを構造化することです。これは本質的に、実際には使用されない「ダミー」変数である可能性があります。

したがって、次のようにモジュールで定数を宣言します。

Const hiddenMacro as Boolean = True

ブール値を使用しましたが、String、Integer、Long などを使用できます。

次に、AutoNewサブルーチンで、この変数を必須の引数として追加します。

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

引数を必要とするマクロは、マクロ リストに表示されません。

引数を必要とするマクロを除外したマクロ リストのスクリーンショット

更新ここで、モジュールが何であるかを強調し、このすべてのコードが Normal.dot ファイルThisDocumentのモジュール内のどこに属しているかを明確に示します。ThisDocument

ハイライトとジャンクのある別のスクリーンショット

于 2013-05-09T01:52:45.817 に答える