久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用VB創(chuàng)建MS Office的COM加載項

 悟靜 2009-07-28
通過此演練,,可以用 VB 創(chuàng)建 COM 加載項,。COM 加載項可以在不給用戶增加復雜性的情況下擴展應用程序的功能。究其實質,,COM 加載項是一個動態(tài)鏈接庫 (DLL),,需要進行注冊才能供 Microsoft? Office XP 應用程序加載和使用。
雖然可以將加載項編寫成可執(zhí)行文件 (.exe),,但 DLL 通常會比.exe 文件提供更好的性能,。

  此演練將使用 VB 創(chuàng)建并運行一個自定義工具欄 COM 加載項。本主題中的任務假定您熟悉 Office 應用程序,、VB 工程,,以及調試和運行代碼。

  引言

  創(chuàng)建 COM 加載項時可以使用任何支持 COM 的語言,,如 VBA,、Visual Basic 和 Microsoft Visual C++。用 Office Developer 創(chuàng)建的加載項將自動打包成 DLL,,并由宿主應用程序注冊后進行加載,。可以創(chuàng)建一個加載項但能用于多個應用程序中,。有關詳細信息,。請參閱為多個應用程序創(chuàng)建 COM 加載項,。

  此演練將完成一系列步驟,從而用 VB 創(chuàng)建一個 COM 加載項,。創(chuàng)建 COM 加載項的基本步驟包括:

  1.配置外接程序設計器,。

  2.在外接程序設計器中編寫代碼。

  3.將命令條控件集成到加載項中,。

  4.對 COM 加載項進行調試和測試,。

  5.為 COM 加載項生成 DLL。

  6.解決 COM 加載項的開發(fā)問題,。

  配置外接程序設計器

  用外接程序設計器創(chuàng)建的工程為開發(fā)加載項提供工作區(qū)域,。使用外接程序設計器可以創(chuàng)建用于 VBA 或任何 Office 應用程序的 COM 加載項,。工程中的每個外接程序設計器都表示一個單獨的,、只能在一種 Office 應用程序中運行的加載項。
創(chuàng)建的 DLL 可包含多個加載項,,它們使用相同的窗體,、模塊和類模塊,但面向的卻是不同的應用程序,。此演練使用 Excel 作為宿主 Office 應用程序,。

  如果希望加載項可供多個應用程序使用,就必須為每個宿主應用程序各自添加一個外接程序設計器,??梢酝ㄟ^模塊共享代碼;但在每個工程中,,必須引用每個宿主應用程序所特定的對象模型,。


  配置外接程序設計器

  1.打開 VB

  2.在“文件”菜單中,選擇“新建工程”,,然后選擇“外接程序”,。

  3.把窗體移除,雙擊設計器中的Connect。

  3.在“外接程序顯示名稱”文本框中鍵入名稱 Greeting Toolbar,,在“外接程序描述”文本框中鍵入說明 Toolbar add-in that launches a Hello World message in Excel,。
 
  4.從“應用程序”列表中選擇 Microsoft Excel。

  5.從“應用程序版本”列表中選擇 Microsoft Excel 10.0,。

  6.從“初始化加載行為”列表中選擇 "Startup",。有關各種不同類型初始加載行為的詳細信息,請參閱指定加載行為,。

  此主題相關圖片如下:

用VB創(chuàng)建MS Office的COM加載項

  7.在“工程”菜單中,,選擇“引用”,確保讓工程引用下列類型庫,。(該引用列表是此演練所必需的,。對于您的加載項,,要確保選擇每個可以使用加載項的 Office 應用程序所需的類型庫。)

●Visual Basic for Applications
●OLE Automation
●Microsoft Add-in Designer
●Microsoft Office 10.0 Object Library
●Microsoft Excel 10.0 Object Library

  8.在“文件”菜單中選擇“保存 Connect”,。

  9.在“工程另存為”對話框中,,輸入名稱 Greetings.Dsr,選擇要將其保存到的文件夾,,然后單擊“保存”,。

  在外接程序設計器中編寫代碼

  在創(chuàng)建工程并為外接程序設計器賦值后,可以添加代碼將加載項與宿主應用程序連接起來,。此演練將向您展示將加載項與宿主應用程序連接起來所需的典型過程和事件,。IDTExtensibility2 接口提供連接這二者所需的 COM 對象和事件。
然后,,加載項可以使用宿主應用程序所展示的對象模型與宿主應用程序接合,。可以在對象瀏覽器中查看特定應用程序的對象模型,。

  外接程序設計器中的代碼可處理加載項與宿主應用程序的集成,。例如,加載或卸載加載項時運行的代碼駐留在“外接程序設計器”的模塊中,。如果加載項中包含窗體,,則外接程序設計器還可以包含用于顯示窗體的代碼。

  聲明變量和設置過程存根

  1.在“工程資源管理器”窗口中,,選擇 Connect,,然后打開“視圖”菜單,單擊“代碼”,。清除原來有的代碼,。

  2.在“通用聲明”部分,引用可擴展性接口,。

Implements IDTExtensibility2

  3.添加用于在加載項和宿主之間提供通訊的模塊級變量,。只要加載了 COM 加載項,賦值為 As Excel.Application 的變量就一直存在,,因此,,所有過程都可以確定加載項當前正在哪個應用程序中運行。因為 WithEvents 關鍵字指派給 cbbButton 變量,,所以菜單項的 Click 事件過程將在用戶單擊新菜單項時觸發(fā),。


'Global object references
Public appHostApp As Excel.Application
Private WithEvents cbbButton As Office.CommandBarButton
  4.在“代碼”窗口中,從“對象”列表中選擇 IDTExtensibility2,,從“事件”列表中選擇 OnConnection,。這將創(chuàng)建 OnConnection 事件過程存根。
注意 您必須使由 IDTExtensibility2 界面提供的每個事件中都包括事件過程存根,。如果您刪除了任何事件過程,,工程就無法編譯,。

  5.為下列每個事件添加事件過程存根:

●OnDisconnection
●OnStartupComplete
●OnBeginShutdown
●OnAddinsUpdate

  現(xiàn)在就可以為您的加載項添加功能了。

  將命令條控件集成到加載項中

  如果您的 COM 加載項有一個用戶界面,,就可以添加用于顯示命令條的代碼,,以方便用戶運行您的加載項,。此演練將顯示如何在宿主應用程序中包含用于創(chuàng)建新命令條控件(工具欄按鈕或菜單項)的代碼,。加載您的加載項時,會同時加載控件,,用戶可以通過單擊按鈕或菜單項打開并使用加載項,。

  創(chuàng)建命令條控件

  1.查找 OnConnection 事件過程,。在 Private Sub 和 End Sub 行之間,添加代碼以創(chuàng)建新的命令條控件并將其指派給支持事件的 CommandBarButton 對象變量,。整個過程將顯示如下:

Private Sub IDTExtensibility2_OnConnection(ByVal _
Application As Object, ByVal ConnectMode As _
AddInDesigNerobjects.ext_ConnectMode, ByVal AddInInst _
As Object, custom() As Variant)

' 存儲啟動引用
Set appHostApp = Application

' 添加命令條
Set cbbButton = CreateBar()
End Sub
  如果您熟悉使用 Visual Basic 創(chuàng)建加載項,,就可能注意到,在 VBA 中創(chuàng)建加載項時,,不用設置命令條按鈕 OnAction 屬性的值,。這是因為事件自動為您掛起。

  2.查找 OnDisconnection 事件過程,。在 Private Sub 和 End Sub 行之間,添加代碼以便在卸載加載項時刪除命令條控件,。整個過程將顯示如下:

Private Sub IDTExtensibility2_OnDisconnection(ByVal _
RemoveMode As AddInDesignerObjects.ext_DisconnectMode, _
custom() As Variant)

RemoveToolbar
' 移除要關閉的引用
Set appHostApp = Nothing
Set cbbButton = Nothing
End Sub
  3.通常,,只要在代碼中存儲函數,就會在 OnConnection 過程中添加您調用的函數對應的代碼,。該函數將創(chuàng)建命令條,,設置命令按鈕的屬性,并提供錯誤信息的處理,。

Public Function CreateBar() As Office.CommandBarButton
' 指定命令條
Dim cbcMyBar As Office.CommandBar
Dim BTnMyButton As Office.CommandBarButton


On Error GoTo CreateBar_Err

Set cbcMyBar = appHostApp.CommandBars.Add(Name:="GreetingBar")

' 指定命令條按鈕
Set btnMyButton = cbcMyBar.Controls.Add(Type:=msoControlButton, _
Parameter:="Greetings")
With btnMyButton
.Style = msoButtonCaption
.BeginGroup = True
.Caption = "&Greetings"
.TooltipText = "Display Hello World Message"
.Width = "24"
End With

' 顯示并返回命令條
cbcMyBar.Visible = True
Set CreateBar = btnMyButton
Exit Function

CreateBar_Err:
MsgBox Err.Number & vbCrLf & Err.Description
End Function
  4.在 OnDisconnection 過程中添加您調用的函數對應的代碼,。該函數在加載宏被卸載時會刪除命令條。

Private Function RemoveToolbar()
 appHostApp.CommandBars("GreetingBar").Delete
End Function
  5.為 CommandBarButton 對象添加一個單擊事件過程,。該過程將在單擊新的命令條按鈕時被調用,。下面的代碼將顯示一條消息以表明單擊事件正在進行:

Private Sub cbbButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
 MsgBox ("Hello World!")
End Sub
  6.保存您的工程。

  現(xiàn)在,,COM 加載項完成,。其余的步驟就是調試和測試代碼以確保它運行順利,然后將加載項放入 DLL 文件中,,該文件可以在其他裝有 Office XP 的計算機上進行分發(fā)和使用,。

  對加載項進行調試和測試

  當您在 VB 中開發(fā) COM 加載項時,可以通過將工程置于運行模式而調試加載項,。如果工程處于運行模式,,就可以從 Office 應用程序中加載 COM 加載項并使用它,,通過使用任何 VB 調試工具而對它進行測試和調試。

  使用 VB 調試和測試 COM 加載項

  1.將任何所需的斷點,、Stop 語句或監(jiān)視放在代碼中,。(可先不做這步)

  2.在“工程”菜單上,單擊“屬性”,在“調試”對話框中,,選擇“等待要創(chuàng)建的部件”,,單擊“確定”
 3.在“運行”菜單上,單擊“全編譯執(zhí)行”,。這將對工程進行編譯(當出現(xiàn)任何編譯錯誤時將提出警告),,然后將工程置于運行模式。

  4.檢查“[運行]”是否出現(xiàn)在VB的標題欄中,。

  注意 必須發(fā)布加載項,,宿主應用程序才能使用它。

  4.啟動一個新的 Excel 實例,。因為將加載項的加載行為設為 "Startup",,所以只要啟動應用程序,加載項就會加載,,OnConnection 事件就會發(fā)生,,于是出現(xiàn) Greetings 按鈕。現(xiàn)在,,您可以使用為調試代碼而添加的斷點和 Stop 語句了,。


  如果單擊 Greetings 按鈕,則只要在 VB 中運行工程,,Hello World 消息就會出現(xiàn)在編輯器之前(不在 Excel 之前),。在將工程生成為 DLL 文件后,該消息就會出現(xiàn)在 Excel 之前,。

  5.當完成調試和測試后,,打開“運行”菜單,單擊“終止工程”,。這會清除臨時文件和注冊表項,,并將工程置于正確的狀態(tài)以生成 DLL 文件。

  為 COM 加載項生成 DLL

  編寫并調試代碼后,,可以使您的加載項成為一個 DLL 以將其部署到其他裝有 Office XP 的計算機上,。

  在 VB 中將 COM 加載項打包為 DLL

  1.從“文件”菜單上,選擇“生成 myAddin.DLL”,。

  2.在“生成工程”對話框中保存文件名 Greetings,,并選擇要用于保存工程的位置。

  3.單擊“確定”,。 (此時,,加載項可在本機正式使用)

  這一步驟將創(chuàng)建 COM 加載項,,添加適當的注冊表項,并使COM 加載項可用于 Office 宿主中,。創(chuàng)建加載項 DLL 時,,VB 使用給外接程序設計器提供的信息,將 DLL 注冊為 COM 加載項,。VB 向注冊表中寫入加載項的名稱,、說明和初始加載行為設置。加載項的宿主應用程序讀取這些注冊表項并加載相應的加載項,。

  常見加載項開發(fā)問題疑難解答

  當在開發(fā)環(huán)境中工作并在應用程序之間進行切換時,,可能會遇到某些錯誤信息或意外行為。下面是一些常見問題及其解決方案,。

  出現(xiàn)編譯錯誤或語句結束在編輯器中無效

  要確保為工程引用了適當的對象庫,。

  運行工程并打開新的宿主應用程序實例時沒有任何反應
 
  ●要確保字“已發(fā)布的”出現(xiàn)在所運行的加載項的標題欄中。如果不如此,,就必須運行工程,。

  ●單擊每個打開的應用程序窗口。您的對象可能正在運行,,但只有在您單擊所打開的應用程序的第一個實例時,,它才是可見的。

  ●要確保正確地指定并設置模塊級變量,。

  ●在宿主應用程序中,,要確保在“COM 加載項”對話框中選中了您的加載項??梢酝ㄟ^向工具欄中添加 COM 加載項命令而對宿主應用程序進行自定義。此命令將打開“COM 加載項”對話框,。

  將 COM 加載項對話框添加到工具欄中

  1.打開EXCEL“工具”菜單,,單擊“自定義”,選擇“命令”選項卡,。在“類別”下,,選擇“工具”。沿“命令”列表向下滾動,,以查找“COM 加載項”,。將“COM 加載項”拖動到工具欄中,以創(chuàng)建新的按鈕,,然后關閉“自定義”對話框,。

  2.在該工具欄上,單擊剛添加的“COM 加載項”按鈕,。

  3.在“COM 加載項”對話框中,,確認選中您的加載項旁邊的復選框,。若要卸載加載項,請清除該復選框,。

  對象出現(xiàn)在宿主應用程序中但沒有響應

  可能是有多個對象實例在運行,。用于檢測和移除已有的具有該名稱的代碼可能沒在運行。檢查并調試您的 OnDisconnection 代碼,。

 

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多