Word 右鍵選單(捷徑選單)是最高頻的操作入口,但預設選單缺少「選擇性貼上」、「頁面設定」等常用指令,需多層選單點擊。透過自訂右鍵選單,可將高頻指令前置,大幅提升編輯效率。本文提供 UI 介面法與 VBA 進階法兩種方案。
⚠️ 注意:Word 365/2021 介面略有不同,若找不到「工具列」索引標籤,請在「自訂」對話框中選擇「命令」索引標籤,類別選「所有命令」,直接搜尋指令名稱拖曳至右鍵選單預覽區。
適用於需標準化部署至團隊、動態依條件顯示選單項目、新增自訂巨集指令的進階需求。
CommandBars("Text"):預設文字右鍵選單。CommandBars("Cell"):表格儲存格右鍵選單。CommandBarControls:選單項目集合。CommandBarButton:按鈕型選單項目。CommandBarPopup:子選單(彈出式選單)。Sub CustomizeContextMenu()
Dim cbar As CommandBar
Dim ctl As CommandBarButton
' 取得文字右鍵選單
Set cbar = Application.CommandBars("Text")
' 避免重複新增:先移除同標籤項目
On Error Resume Next
cbar.Controls("我的選擇性貼上").Delete
cbar.Controls("我的頁面設定").Delete
On Error GoTo 0
' 新增「選擇性貼上」按鈕(放第 1 位)
Set ctl = cbar.Controls.Add(msoControlButton, , , 1)
With ctl
.Caption = "我的選擇性貼上"
.FaceId = 22 ' 圖示 ID:貼上圖示
.OnAction = "PasteSpecialDialog" ' 內建命令名稱
.TooltipText = "彈出選擇性貼上對話框"
End With
' 新增「頁面設定」按鈕(放第 2 位)
Set ctl = cbar.Controls.Add(msoControlButton, , , 2)
With ctl
.Caption = "我的頁面設定"
.FaceId = 51 ' 圖示 ID:頁面設定圖示
.OnAction = "FilePageSetup" ' 內建命令名稱
.TooltipText = "開啟頁面設定對話框"
End With
' 新增分隔線(第 3 位)
cbar.Controls.Add msoControlSplit, , , 3
MsgBox "右鍵選單客製化完成,重新啟動 Word 生效"
End Sub
' 也可直接呼叫內建對話框的巨集
Sub PasteSpecialDialog()
Dialogs(wdDialogEditPasteSpecial).Show
End Sub
%AppData%\Microsoft\Word\Startup\` 目錄。| 功能 | 命令名稱 | FaceId 建議 |
|---|---|---|
| 選擇性貼上 | PasteSpecialDialog / EditPasteSpecial | 22 |
| 頁面設定 | FilePageSetup | 51 |
| 清除格式 | ClearFormatting | 213 |
| 切換欄位代碼 | ViewFieldCodes | 345 |
| 字數統計 | ToolsWordCount | 158 |
| 修訂/追蹤修訂 | ToolsRevisionMarks | 198 |
更多 FaceId 可用「巨集編輯器」→「立即視窗」輸入 `?Application.CommandBars.GetPressedFaceId` 查詢,或參考線上 FaceId 完整列表。
Sub Auto_UpdateContextMenu()
Dim cbar As CommandBar, ctl As CommandBarControl
Set cbar = Application.CommandBars("Text")
' 範例:若選取內容包含表格,顯示「表格屬性」;否則隱藏
For Each ctl In cbar.Controls
If ctl.Caption = "我的表格屬性" Then
ctl.Visible = (Selection.Information(wdWithInTable) = True)
End If
Next ctl
End Sub
在 `WindowSelectionChange` 事件中呼叫上述程序,實現右鍵選單隨選取內容動態調整。