Office開發需要的輔助工具


 

 Office開發主要包括兩個層面:功能開發和界面開發。

  • 功能開發,指的是開發的產品能夠解決哪些問題,其他人使用了你的工具改善了哪些方面。
  • 界面開發,指的是產品與用戶交互的方式,或者說產品呈現在Office窗口中的哪個場所。

一般來說,一個成熟完善的Office插件、工具在開發的過程中,都要考慮以上兩個方面。

本帖和大家分享一下Office界面開發方面的話題。

Office編程開發,允許開發人員植入的元素主要有:

  • customUI(自定義功能區、Office菜單、右鍵菜單等)
  • CustomTaskpane(自定義任務窗格)
  • Commandbar和CommandbarControl(自定義工具欄、控件等)

除了以上3種,還可以使用窗體和控件,這里所說的窗體指的是開發語言中的窗體,例如用VB.Net開發的插件,那就可以加入VB.Net的窗體和控件。

其中,customUI和CustomTaskpane用於Office 2007以上版本,實際效果如下圖: 

 

 Commandbar和CommandbarControls可用於所有Office版本。此外,還用於VBA和VB6編程環境外接程序的開發中,因為VBA編程環境一直是工具欄/控件方式。

實際效果如下圖:

 

 然而,這些定制技術都有一定的理論基礎,customUI和Commandbar方面的知識體系非常龐大,需要長期研究學習才能掌握和理解。

CustomTaskpane的實現過程最為簡單,也沒什么太復雜的變化代碼。

以上這些重要技術的原理和具體實現過程,大家可以看我寫過的書、發布的視頻課程、帖子等。

為了方便更多人學習,下面分享Office界面開發相關的重要工具。

customUI方面的工具

customUI是通過XML代碼實現,例如下面的XML將會在Excel的 開始選項卡的 字體組左側出現一個自定義組。

 1 <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
 2     <ribbon startFromScratch="false">
 3         <tabs>
 4             <tab idMso="TabHome" label="Ribbon XML Editor">
 5                 <group id="Group1" label="測試" insertBeforeMso="GroupFont" >
 6                     <button id="Button1" label="蜘蛛網&#xA;" imageMso="ChartTypeOtherInsertGallery" onAction="Button1_Click" size="large" />
 7                 </group>
 8             </tab>
 9         </tabs>
10     </ribbon>
11 </customUI>

 

效果如下:

上述附件的下載地址: 

customUIDemo.rar

看了上面的效果,大家一定有如下疑問:

  1. XML代碼是怎么寫出來的?
  2. TabHome、GroupFont是哪兒來的?
  3. ChartTypeOtherInsertGallery從哪兒來的?
  4. Button1_Click起什么作用?

下面一一解釋。

1. XML代碼是微軟規定好的語法格式,設計不同場所的Office界面,寫法也有所不同。

 Ribbon XML Editor軟件提供 快速訪問工具欄、常用功能區等5個常用場所的XML模板。用戶在此基礎上稍作修改即可。

該軟件還提供自動把XML壓入Office文檔、自動提取Office文檔中的XML代碼等功能。 

2. TabHome和GroupFont是Office的內置ID,叫做idMso。

 OfficeidMsoViewer軟件提供Access/Excel/PowerPoint/Word的所有內置idMso查詢,支持中文、英文、日文Office 2013。

點擊任何一個節點,直接給出該節點對應的XML代碼。

 

3. ChartTypeOtherInsertGallery是Office的一個內置圖標,叫做imageMso。

 imageMso7345可以查詢微軟提供的7345個內置Office圖標,下載這個工作簿,點擊任何一個圖標會給出該圖標對應的imageMso字符串。

 

4. Button1_Click是按鈕控件的回調函數名稱,用來響應VBA中的過程。

Ribbon XML Editor軟件可以根據XML生成 VBA、VB6/VB.Net/C#語言的回調函數。

 

Commandbar方面的工具

 在Excel 2003中,運行如下一段VBA代碼,會在單元格右鍵添加一個“蜘蛛網”的自定義按鈕。

 1 Sub AddControl()  2     Dim cmb As CommandBar, ct As CommandBarButton  3     Set cmb = Application.CommandBars("Cell")  4     Set ct = cmb.Controls.Add(Type:=msoControlButton, before:=1)  5     With ct  6         .BeginGroup = False
 7         .Caption = "蜘蛛網(&Z)"
 8         .Enabled = True
 9         .FaceId = 484
10         .Style = msoButtonIconAndCaption 11         .OnAction = "ct_Click"
12         .TooltipText = "提示語"
13         .BeginGroup = False
14         .Visible = True
15     End With
16 End Sub
17 Sub ct_Click() 18     ActiveCell.Value = Application.CommandBars.ActionControl.Caption 19 End Sub

實際效果如下圖:

 

看到這個效果,一般會產生如下疑問:

Application.CommandBars("Cell")這個代碼的Cell代表什么意思?

FaceId = 484,這個數字起什么作用?

回答如下:

Cell是Excel的一個內置工具欄的名稱,CommandBars("Cell")表示單元格的右鍵菜單,右鍵菜單也屬於工具欄的一個類型。

查詢所有內置工具欄的工具有:

OfficeCommandbarViewer:該工具可以查看常用Office組件的所有內置工具欄和內置控件信息。

 OfficeCommandbarDesigner:可以從該軟件中直接操作和控制Office的所有工具欄,可以查看工具欄和控件信息,也可以編輯。

 

使用以上工具,就可以輕松地知道每個工具欄的名稱叫什么了,從而在正確的場所設計自己的工具。

對於工具欄中控件的圖標,微軟采用FaceID來規定,每個數字代表一個內置圖標。

FaceIDViewer采用Excel工作簿制作的圖標查看工具。

 每個圖標下面有一個數字,在代碼中設置FaceID為這個數字就可以。

 以上講過的所有工具,在我的博客園中均可下載到。下載網址大家自行搜索。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM