使用VB6創(chuàng)建COM加載宏這兩天學習了關(guān)于創(chuàng)建COM加載宏的知識,將學習成果進行了整理,供大家參考.
使用VB6創(chuàng)建COM加載宏
摘要:本文通過示例詳細描述了如何使用VB6創(chuàng)建COM加載宏的過程,以及如何在Excel中加載和使用。
創(chuàng)建一個COM加載宏的步驟
1、打開VB6應用程序,在“新建工程”中選擇“外接程序”,打開新工程。
2、在右側(cè)工程資源管理器窗口中將會有一個名為frmAddin的窗體和一個名為Connect的設(shè)計器對象。移除frmAddin窗體,然后對Connect設(shè)計器對象進行設(shè)置。
雙擊設(shè)計器對象,出現(xiàn)一個設(shè)計器窗體,窗體中有如下字段及相應的文本框:
• 外接程序顯示名稱 – 填寫加載宏的名字。
• 外接程序描述 – 描述你所創(chuàng)建的加載宏的作用和功能。
• 應用程序 – 使用你所創(chuàng)建的加載宏的應用程序。在這里,選擇Microsoft Excel。
• 應用程序版本 – 使用你所創(chuàng)建的加載宏的應用程序版本。當在應用程序文本框中選擇了Microsoft Excel后,該文本框自動出現(xiàn)Microsoft Excel 11.0。
• 初始化加載行為 – 當應用程序開啟時,是否自動裝載該加載宏,有四個選項。若設(shè)置這為Startup,那么當Excel開始時將裝載該加載宏;若設(shè)置為Load on demand,則在Excel中需要時再裝載該加載宏。
3、添加對Excel的引用。選擇菜單“工程——引用”命令,在出現(xiàn)的“引用”對話框中選中Microsoft Excel 11.0 Object Liabrary前的復選框。
4、設(shè)置工程屬性。選擇菜單“工程——MyAddIn屬性”命令,或在工程資源管理器窗口中擊右鍵選擇“MyAddIn屬性”命令,在出現(xiàn)的工程屬性對話框中設(shè)置工程名稱和工程描述。
5、編輯Connect設(shè)計器代碼。在Connect設(shè)計器對象上右擊并選擇“查看代碼”或者點選Connect設(shè)計器后單擊窗口頂部的“查看代碼”按鈕,將出現(xiàn)VB自動生成的代碼。刪除其中的代碼,只保留OnConnection過程和OnDisconnection過程,用于在應用程序中裝載和卸載加載宏,并在其中添加自已實現(xiàn)加載宏功能所需要的代碼。在本示例中,Connect設(shè)計器中的最終代碼如下:
‘****************************************
Option Explicit
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
'設(shè)置應用程序變量
Set xlApp = Application
'設(shè)置自已的菜單的子程序
CreateToolbarButtons
End Sub
Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
'釋放占用的內(nèi)存
Set xlApp = Nothing
'移除自已的菜單的子程序
RemoveToolbarButtons
End Sub
‘****************************************
6、選擇菜單“工程——添加模塊”命令,添加一個標準的模塊并添加相應的代碼。在本示例中,該標準模塊的代碼如下:
‘****************************************
‘聲明變量、類實例和集合
Public xlApp As Excel.Application
Dim ButtonEvent As cbEvents
Dim ButtonEvents As Collection
'定義自已菜單的子程序
Public Sub CreateToolbarButtons()
'為了確保只添加按鈕一次,先移除它們
RemoveToolbarButtons
'聲明變量
Dim cbBar As Office.CommandBar
Dim btNew As Office.CommandBarButton
'創(chuàng)建一個新的集合
Set ButtonEvents = New Collection
'查找excel中的工作表菜單欄(帶有文件,編輯、視圖等命令)
Set cbBar = xlApp.CommandBars("Worksheet Menu Bar")
'添加一個新按鈕到工具菜單
Set btNew = cbBar.FindControl(Id:=30007).Controls.Add(msoControlButton, , , , True)
With btNew
.
'設(shè)置一個唯一的標簽,使我們自定義控件在后面容易找到或刪除
.Tag = "COMAddinTest"
'設(shè)置提示文本
.ToolTipText = "Calls Sub1"
'設(shè)置顯示在菜單中的標題
.Caption = "Sub1"
End With
'獲取cbevents類中的一個新實例
Set ButtonEvent = New cbEvents
'將它指定給我們所創(chuàng)建的按鈕
Set ButtonEvent.cbBtn = btNew
ButtonEvents.Add ButtonEvent
'添加另一個按鈕
Set btNew = cbBar.FindControl(Id:=30007).Controls.Add(msoControlButton, , , , True)
With btNew
.
'設(shè)置一個唯一的標簽,使我們自定義控件在后面容易找到或刪除
.Tag = "COMAddinTest"
'設(shè)置提示文本
.ToolTipText = "Calls Sub2"
'設(shè)置顯示在菜單中的標題
.Caption = "Sub2"
End With
'獲取cbevents類中的一個新實例
Set ButtonEvent = New cbEvents
'將它指定給我們所創(chuàng)建的按鈕
Set ButtonEvent.cbBtn = btNew
ButtonEvents.Add ButtonEvent
End Sub
'刪除自已定義的菜單的子程序
Public Sub RemoveToolbarButtons()
Dim cbBar As CommandBar
Dim cbCtr As CommandBarControl
'忽略錯誤
On Error Resume Next
'需要從命令條中移除按鈕
'首先找到該按鈕
Set cbBar = xlApp.CommandBars("Worksheet Menu Bar")
'運用我們所設(shè)置的標簽查找控件
Set cbCtr = cbBar.FindControl(, , "COMAddinTest")
While Not cbCtr Is Nothing
'刪除
cbCtr.Delete
Set cbCtr = cbBar.FindControl(, , "COMAddinTest")
Wend
'恢復占用的內(nèi)存
Set ButtonEvents = Nothing
Set ButtonEvent = Nothing
End Sub
'示例子過程
Sub sub1()
MsgBox "Hello!"
End Sub
'示例子過程
Sub sub2()
MsgBox "Hi!"
End Sub
‘****************************************
7、創(chuàng)建一個類模塊來處理菜單欄事件。選擇菜單“工程——添加類模塊”,并命名為cbEvents,然后添加如下代碼:
‘****************************************
Public WithEvents cbBtn As CommandBarButton
Private Sub cbBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
'忽略產(chǎn)生的任何錯誤
On Error Resume Next
'檢查OnAction屬性并執(zhí)行相應的程序
Select Case Ctrl.OnAction
Case "Sub1"
sub1
Case "Sub2"
sub2
End Select
'查找指定給OnAction屬性的程序刪除Excel
CancelDefault = True
End Sub
‘****************************************
8、生成dll文件。選擇菜單“文件——生成dll”命令,將工程生成dll文件。
安裝Excel COM加載宏
注冊Dll
(1) Dll文件需要注冊到Windows中以便能夠運行。如果是在VB6中生成Dll文件,將在所創(chuàng)建該加載宏的計算機上自動注冊。
(2)當然,也可以手工注冊。點擊屏幕左下角“開始”按鈕,選擇“運行”,在出現(xiàn)的“運行”對話框中的“打開”文本框中輸入“regsvr32.exe <dllfilename>。
(3)若要移除或刪除dll,先要注銷它,即在“運行”對話框中使用regsvr32.exe命令并附加/u參數(shù)實現(xiàn)。
在Excel中安裝加載宏
(1)若在VB6中創(chuàng)建該加載宏時,在設(shè)計器中設(shè)置初始化加載行為時選擇“Startup”,則在裝載Excel時,加載宏會自動裝載并運行。
(2)如果沒有選擇“Startup”,則需要手動裝載。選擇菜單“工具——自定義”,在出現(xiàn)的“自定義”對話框中,選取“命令”標簽,選擇左側(cè)“類別”中的“工具”項,在右側(cè)中找到“COM加載項…”,拖動它到菜單欄中,關(guān)閉“自定義”對話框。此時,點擊菜單欄中的“COM加載項…”命令,出現(xiàn)“COM加載項”對話框,剛才所生成的加載宏已出現(xiàn)在“可用加載項”列表中,選中或取消該加載宏前面的復選框來裝載或卸載加載宏。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。