??有的時候需要使用VBA代碼來控制Word的工具欄上的某些功能,比如下圖紅色的區(qū)域內(nèi)的很多功能:

??百度,得到的解決方式大多都是使用ActiveDocument.CommandBars.Item(X).Controls(X).Execute的方式來調(diào)用。那么現(xiàn)在關(guān)鍵問題來了,如何確定我需要的功能,位于哪個CommandBars?是第幾號Controls?
??假設(shè)我現(xiàn)在需要使用VBA代碼調(diào)用這個功能:

??如何確定我需要的ActiveDocument.CommandBars.Item(X).Controls(X).Execute這兩個X呢?
??這里采取了一個笨辦法,就是:遍歷。
??VBA代碼如下(由于輸出內(nèi)容太多,VBA的直接窗口顯示不完全,就直接寫入txt文檔了):
Sub Macro1()
Open "C:\1.txt" For Output As #1 '打開一個txt文件準(zhǔn)備寫入
For Each cmd In ActiveDocument.CommandBars '遍歷所有的CommandBar對象
Debug.Print cmd.Name & vbTab & cmd.Index
Print #1, "CommandBars======" & cmd.Name & vbTab & cmd.Index '寫入文件
For Each con In cmd.Controls '遍歷所有的Control對象
Debug.Print con.Caption & vbTab & con.Index
Print #1, con.Caption & vbTab & con.Index '寫入文件
Next
Debug.Print vbNewLine
Print #1, vbNewLine '寫入文件
Next
Close #1 '關(guān)閉文件
End Sub
??文件內(nèi)容過長,此略過。
??這里需要注意的就是,遍歷出來的結(jié)果,和我們?nèi)粘J褂玫暮腿庋鬯姷腤ord IDE上的控件不是對應(yīng)的,所以就要我們?nèi)ミ@個長列表中找到我們需要的內(nèi)容。
??根據(jù)日常使用經(jīng)驗和名稱,我們嘗試搜索關(guān)鍵字“段落”。然后你就會發(fā)現(xiàn),整個列表有多處命中,這里我選擇這個:
| CommandBars======Font Paragraph | 105 |
|---|---|
| 剪切??(&T) | 1 |
| 復(fù)制??(&C) | 2 |
| 粘貼??(&P) | 3 |
| 漢字重選(&V) | 4 |
| 字體??(&F)... | 5 |
| 段落??(&P)... | 6 |
??105 和6,姑且一試
Sub t()
ActiveDocument.CommandBars.Item(105).Controls(6).Execute
End Sub

??調(diào)用成功。