Vb word插件<?XML:NAMESPACE PREFIX = O />
你也許曾在Office2000下的Word2000、Access2000、Excel2000、PowerPoint2000等軟件中的工具條或菜單條資源中,看到一些其它軟件加入的新的自定義工具條按鈕或菜單條,當點擊它們時,會有其不同的響應發生。下面,讓我們也來實現這些功能,需要說明的是,在這裏我們不用VB/VBA來實現它,而是用VC6中所帶ATL(活動模板庫)3.0來開發具有這種效果的Office2000內部COM插件。在Office2000中,不管是Word2000、Access2000、Excel120000、PowerPoint2000還是Outlook2000等,它們COM插件的編程方法及步驟都是極其相似的(除註冊表中鍵值及導入相應類型庫不同外)。
基礎知識
一個Office2000下的內部COM插件必須實現一個_IDTExtensibility2派發接口,_IDTExtensibility2派發接口被定義在MSADDin Designer類型庫(MSADDNDR.dll/MSADDNDR.tlb)中,通常位於<盤符>/Program Files/Common Files/Designer下。_IDTExtensibility2接口中必須實現下面五個接口函數(一般只需編寫OnConnection和OnDisconnection中代碼),分別如下:
1. OnConnection: 裝載插件到內存時處理(可以通過自動化在程序啓動時自動裝載插件)。
2. OnDisconnection: 從內存中缷載插件時處理。
3. OnAddinsUpdate: COM插件改變時處理。
4. OnStartupComplete: 當應用程序啓動時插件剛裝載完成時處理。
5. OnBeginShutdown: 當應用程序關閉時插件剛缷載完成時處理。
註冊插件
只有在正確註冊了相應應用程序的內部COM插件時,才能被其應用程序加載上。需要在註冊表中創建以下鍵值:
HKEY_CURRENT_USER/Software/Microsoft/Office/<TheOfficeApp>/Addins/<ProgID>
其中,TheOfficeApp表示相應程序名,如:Word、Outlook等,ProgID表示內部COM插件程序的唯一標識符的字符串表示形式,如:Outlook2000Addin.Addin等。
ProgID鍵值下主要創建以下四個鍵值:
1. FriendlyName: 字符串類型,插件的名稱,將在相應程序的COM加載對話框中看到。
2. Description: 字符串類型,插件的描述信息。
3. LoadBehavior: DWORD類型,決定插件將以什麼形式被裝載。當其值爲0x03時,爲應用程序裝載時被自動裝載(一般使用此值)、當其值爲0x08時,爲用戶控制激活裝載。
4. CommandLineSafe: DWORD類型,命令行方式,可以設置爲0x01(真)或0x00(假)。
在Office應用程序中,儘管菜單和工具欄按鈕看上去不太一樣,但實質上它們是相同類型的對象。
CommandBars集合包含程序中的所有命令條,如:工具條和菜單條。
每一個CommandBars集合都有一個CommandBar對象和它對應,CommandBar 對象可以包含其它的 CommandBar 對象,這些對象是作爲按鈕或菜單命令來用的。
每一個CommandBar都將通過CommandBarControls 對象被引用,CommandBarControls又可以包含一組CommandBarControl對象。
每一個CommandBarControl可以包含一個CommandBar對象,並可以通過它來存取控件屬性。
每一個CommandBarControl對象,實際是對應CommandBarControls中的控件集合。
CommandBarControl可以有三種表現形式:
● 彈出式(CommandBarPopup):相當於菜單條的一個菜單項。
● 組合框(CommandBarComboBox):類似於工具條中組合框控件。它包括一個工具欄和緊接着工具欄的一個下拉箭頭。單擊該按鈕,將顯示出更多的帶圖標的菜單命令。
● 按鈕(CommandBarButton):相當於標準的工具欄按鈕,即帶有圖標的按鈕。
在下面的示例程序中,我們將在Word 2K中新建一個工具條並在其上添加二個按鈕,並且在其菜單“工具”中新建一個菜單條,這些操作都可以在OnConnection接口函數中完成。
1,添加引用
Microsoft Add-In Designer
Microsoft Office 11.0 Object Library
Microsoft Word 11.0 Object Library
2,實現IDTExtensibility2接口
Implements IDTExtensibility2
3,實現函數,一共5個接口函數
OnConnection 函數實現下載代碼,實現得功能,插入一個工具條,上面有一個按鈕,單擊會顯示對話框
Dim WithEvents spCmdButton As Office.CommandBarButton
上面這一句,在通用處聲明
Dim spApp As Word.Application
//獲取菜單,工具條集合
Dim spCmdBars As Office.CommandBars
Dim spNewCmdBar As Office.CommandBar
Dim spbarcontrols As Office.CommandBarControls
Dim spNewBar As Office.CommandBarControl
Set spApp = Application
Set spCmdBars = spApp.CommandBars
Set spNewCmdBar = spCmdBars.Add("王永勝", 1)
Set spbarcontrols = spNewCmdBar.Controls
Set spNewBar = spbarcontrols.Add(msoControlButton, 1)
Set spCmdButton = spNewBar
spCmdButton.Style = MsoButtonStyle.msoButtonCaption
spCmdButton.Visible = True
spCmdButton.Enabled = True
spCmdButton.ToolTipText = "王永勝"
spCmdButton.Caption = "按鈕"
spNewBar.Visible = True
按鈕事件得實現函數
Private Sub spCmdButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
MsgBox "ddf"
End Sub