excelperfect 執(zhí)行在功能區(qū)和不在功能區(qū)中的命令 在上篇文章中,,通過下面的語句來執(zhí)行MinimizeRibbon命令: Application.CommandBars.ExecuteMso(idMso) 該方法僅接受1個參數:idMso,,指定命令的名稱(也被稱作該控件的標識符)。MinimizeRibbon是不在功能區(qū)中的一個命令,。 下面展示的是執(zhí)行不在功能區(qū)中的命令的另一個示例: '啟動計算器程序 Application.CommandBars.ExecuteMso 'Calculator' 接下來的示例執(zhí)行功能區(qū)中的命令,它們通過功能區(qū)控件圖形化呈現: '拆分活動窗口成窗格,移除拆分窗格 '可通過選擇視圖|窗口|拆分實現 '也可執(zhí)行下面的ExecuteMso方法 Application.CommandBars.ExecuteMso 'WindowSplitToggle' Excel有超過10000個idMso,,那是在功能區(qū)和不在功能區(qū)中命令的名字。 idMso可以是命令的名字,,內置選項卡的名字,或者其它內置元素的名字??梢栽诰W上搜索下載關于Excel內置控件名字的文檔,。 激活功能區(qū)選項卡的兩種方法 下面介紹激活特定功能區(qū)選項卡的兩種不同方法,。一種是使用SendKeys方法模擬按鍵,就好像是手工按活動窗口中的鍵一樣,;另一種是使用XML和VBA代碼。 SendKeys方法 例如,,下面的VBA代碼模擬按下ALT,、A和ALT鍵: Application.SendKeys '%A%' 將上面的語句放在Workbook_Open事件中,,在打開該工作簿時,將激活“數據”選項卡: Private Sub Workbook_Open() Application.SendKeys '%A%' End Sub 注意,,在Excel的有些版本中,在Excel窗口被裝載之前,,Workbook_Open事件中的SendKeys方法執(zhí)行得過早。為了解決這個問題,,可以使用OnTime事件在執(zhí)行Workbook_Open事件一至兩秒后,,發(fā)送按鍵,,如下面的代碼: Private Sub Workbook_Open() '在1秒后執(zhí)行SendKeystrokes過程 Application.OnTime Now +TimeValue('0:0:1'), 'SendKeystrokes' End Sub Sub SendKeystrokes() Application.SendKeys '%A%' End Sub 下面列出了代表鍵的代碼: 為了避免不可預料的結果,總是使用SendKeys方法作為最后的手段,,并且確?;顒哟翱谑窍胍l(fā)送按鍵的正確的窗口。 XML和VBA代碼(Excel 2010及以后的版本) 激活功能區(qū)選項卡的另一種方法是使用XML和VBA代碼,。執(zhí)行下列步驟: 1. 下載CustomUI Editor并安裝,。 2. 創(chuàng)建新工作簿并將其保存為啟用宏的工作簿。 3. 關閉該工作簿并在CustomUI Editor中打開,。 4. 在CustomUI Editor中,,單擊插入并選擇Office 2007 Custom UI Part。 選擇這個選項使工作簿與Excel 2007及后續(xù)版本兼容,。 5. 復制并粘貼下面的XML代碼: <customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui'onLoad='Initialize'> </customUI> onLoad是一個回調屬性,,有一個VBA過程的名稱賦給它,本例中的過程命名為Initialize,,當打開工作簿時調用此過程,。 6. 單擊Validate按鈕來檢查是否有錯誤。 7. 單擊Generate Callbacks按鈕生成Initialize回調過程: ' customUI.onLoad的回調 Sub Initialize(ribbon as IRibbonUI) End Sub 復制該回調過程,,用于稍后粘貼到工作簿的標準VBA模塊中,。 8. 保存并關閉該文件。 9. 在Excel中打開該文件,。 由于Initialize過程仍然沒有準備執(zhí)行,因此會出現錯誤消息,,單擊“確定”,。 10. 按Alt+F11打開VBE。 11. 插入一個標準模塊,,粘貼剛才復制的回調過程,,并修改代碼如下: Public myRibbon As IRibbonUI ' customUI.onLoad的回調 Sub Initialize(ribbon As IRibbonUI) Set myRibbon = ribbon End Sub 當在Excel中打開該工作簿時,執(zhí)行Initialize過程,,獲取功能區(qū)對象引用賦值給myRibbon對象變量,。使用對功能區(qū)的引用,可以接著通過myRibbon對象激活功能區(qū)選項卡(以及使功能區(qū)中的選項卡和控件無效),。 12. 保存,,關閉,,然后重新打開該工作簿。 要激活特定的內置功能區(qū)選項卡,,例如“數據”選項卡,,使用下面的代碼: myRibbon.ActivateTabMso 'TabData' 如果要在打開工作簿時激活“數據”選項卡,在Initialize過程中插入上面的語句: Sub Initialize(ribbon As IRibbonUI) Set myRibbon = ribbon '激活功能區(qū)的數據選項卡 myRibbon.ActivateTabMso 'TabData' End Sub 如果要激活自定義的功能區(qū)選項卡,,例如id為MyCustomTab的自定義選項卡,,使用下面的代碼: '激活id為MyCustomTab的自定義選項卡 myRibbon.ActivateTab 'MyCustomTab' 注意,ActivateTabMso方法和ActivateTab方法僅適用于Excel 2010及后續(xù)版本,,不能用于Excel 2007。 上面程序中ActivateTabMso方法的參數值“TabData”是idMso,,我們將在下面的文章中討論什么是idMso以及如何識別它們。 說明:本專題系列大部分內容學習整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,,僅供學習研究,。 歡迎在下面留言,完善本文內容,,讓更多的人學到更完美的知識,。 歡迎到知識星球:完美Excel社群,進行技術交流和提問,,獲取更多電子資料,。 完美Excel社群2020.9.20動態(tài) #Excel公式技巧# Excel中數組乘法的3種方法 |
|
來自: hercules028 > 《VBA》