Bagaimana membangun Office 2000 COM menambahkan-di dalam Visual Basic

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 238228 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Microsoft Office 2000 dan kemudian dukungan baru, seragam desain arsitektur untuk membangun aplikasi tambahan untuk meningkatkan dan mengontrol aplikasi Office. Ini add-in yang disebut COM Add-in. Artikel ini akan menunjukkan cara untuk membangun sebuah COM Add-In menggunakan Visual Basic.

INFORMASI LEBIH LANJUT

COM Add-In adalah server COM inprocess (ActiveX DLL) yang mengimplementasikan antarmuka IDTExensibility2 seperti yang dijelaskan dalam Microsoft Add-In Designer perpustakaan jenis (Msaddndr.dll). Semua peralatan tambahan com. mewarisi dari antarmuka ini dan harus menerapkan masing-masing metode lima.

OnConnection

OnConnection peristiwa kebakaran setiap kali COM add-in terhubung. Tambahan dapat dihubungkan pada startup, oleh pengguna akhir, atau melalui otomatisasi. Jika OnConnection kembali berhasil, tambahan dikatakan dimuat. Jika kesalahan kembali, aplikasi host segera rilis referensi untuk tambahan dan objek dihancurkan.

OnConnection mengambil empat parameter berikut:
  • Aplikasi - referensi ke objek aplikasi host.
  • ConnectMode - sebuah konstanta yang menentukan bagaimana tambahan terhubung.
    • ext_cm_AfterStartup - dimulai oleh pengguna akhir dari kotak dialog add-in COM.
    • ext_cm_CommandLine - terhubung dari baris perintah. (Tidak berlaku untuk membangun peralatan tambahan COM untuk aplikasi kantor.)
    • ext_cm_External - terhubung oleh aplikasi eksternal melalui otomatisasi. (Tidak berlaku untuk membangun peralatan tambahan COM untuk aplikasi kantor.)
    • ext_cm_Startup - dimulai oleh tuan rumah pada aplikasi startup. (Perilaku ini dikendalikan oleh pengaturan registri.)
  • AddInInst - referensi objek COMAddIn yang merujuk kepada add-in ini dalam koleksi COMAddIns untuk aplikasi host.
  • Custom - sebuah array dari varian yang dapat menyimpan data yang ditetapkan pengguna.

OnDisconnection

OnDisconnection peristiwa kebakaran ketika peralatan tambahan COM secara terputus dan sebelum membongkar dari memori. Tambahan harus melakukan pembersihan setiap sumber daya dalam acara ini, dan memulihkan perubahan dibuat untuk aplikasi host.

OnDisconnection mengambil dua parameter berikut:
  • RemoveMode - sebuah konstanta yang menentukan bagaimana tambahan diputus.
    • ext_dm_HostShutdown - terputus ketika tuan rumah aplikasi ditutup.
    • ext_dm_UserClosed - terputus oleh pengguna akhir atau kontroler otomatisasi.
  • Custom - sebuah array dari varian yang dapat menyimpan data yang ditetapkan pengguna.

OnAddInsUpdate

OnAddInsUpdate peristiwa kebakaran ketika set terdaftar tambahan COM perubahan. Dengan kata lain, setiap kali COM add-in diinstal atau dihapus dari aplikasi tuan rumah, ini peristiwa kebakaran.

OnStartupComplete dan OnBeginShutdown

OnStartupComplete dan OnBeginShutdown metode disebut ketika aplikasi host telah meninggalkan atau memasuki keadaan di mana interaksi pengguna harus dihindari karena aplikasi sibuk loading atau pembongkaran sendiri dari memori. OnStartupComplete hanya disebut jika Anda add-in terhubung selama Persiapan, dan OnBeginShutdown hanya disebut jika Anda menambahkan-di terputus oleh tuan rumah selama pematian.

Karena antarmuka pengguna untuk aplikasi host sepenuhnya aktif ketika peristiwa kebakaran, mereka mungkin satu-satunya cara untuk melakukan tindakan tertentu yang kalau tidak akan tersedia dari OnConnection dan OnDisconnection.

Mendaftar COM add-in

Selain untuk normal COM pendaftaran, COM add-in perlu untuk mendaftar sendiri dengan setiap aplikasi Office yang membentang. Untuk mendaftar sendiri dengan aplikasi tertentu, tambahan harus membuat sub kunci, menggunakan yang ProgID sebagai nama untuk kunci, di bawah lokasi berikut:
HKEY_CURRENT_USER\Software\Microsoft\Office\<OfficeApp>\Addins\<ProgID>
Tambahan dapat memberikan nilai-nilai di lokasi ini kunci untuk nama tampilan ramah dan keterangan lengkap. Selain itu, tambahan harus menentukan perilaku beban yang dikehendaki dengan menggunakan nilai DWORD yang disebut "LoadBehavior." Nilai ini menentukan bagaimana tambahan dimuat oleh aplikasi host, dan terdiri dari kombinasi nilai-nilai berikut:
  • 0 = Putuskan - tidak dimuat.
  • 1 = Connected - load.
  • 2 = Bootload - beban pada aplikasi Startup.
  • 8 = DemandLoad - beban hanya ketika diminta oleh pengguna.
  • 16 = ConnectFirstTime - beban hanya sekali (pada startup berikutnya).
Nilai khas yang ditentukan adalah 0x03 (Connected | Bootload).

Add-in yang menerapkan IDTExtensibility2 juga menjelaskan DWORD nilai disebut "CommandLineSafe" untuk menunjukkan apakah mereka aman untuk operasi yang tidak mendukung antarmuka pengguna. Nilai 0x00 berarti palsu, 0x01 adalah benar.

Bangunan COM add-in

Anda dapat membangun COM Add-In di salah satu dari tiga cara yang disebutkan di bawah ini:

Bangunan COM add-in dengan menggunakan Com add-in Template

Jika Anda memiliki Microsoft Office 2000 pengembang atau Microsoft Office XP pengembang dan Visual Basic 6.0, cara termudah untuk membangun sebuah COM Add-in adalah dengan menggunakan COM in.vbp menambahkan template. Proyek ini terletak di subfolder ODETools\V9\Samples\OPG\Samples\CH11\VB_COM_AddIn Office 2000 pengembang CD. Salin file dalam folder ini ke folder Visual Basic 6.0 Template\Projects, yang biasanya c: program files Microsoft Visual Studio\VB98\Template\Projects. Menyalin proyek template ke lokasi ini akan memastikan bahwa template akan muncul di kotak dialog Visual Basic 6.0 proyek baru. Lihat Bab 11 dari Microsoft Office 2000 Visual Basic Programmer's Guide untuk informasi lebih lanjut tentang template ini dan menciptakan COM Add-in.

Bangunan COM add-in dengan menggunakan Visual Basic 6 tambahan desainer

Jika Anda memiliki hanya Microsoft Visual Basic 6.0 diinstal dan ingin menggunakan pembungkus sehingga Anda tidak perlu menerapkan langsung IDTExtensibility2, Anda dapat menggunakan desainer yang sama Add-In yang akan Anda gunakan untuk membangun VB6 Add-in mengikuti langkah-langkah untuk membangun seperti add-in untuk Microsoft Excel 2000 atau 2002:
  1. Mulai Microsoft Visual Basic 6.0 dan pilih Addin sebagai jenis proyek. Ini harus menambahkan class desainer untuk proyek (Connect) dan bentuk (frmAddin).
  2. Terbuka Perancang jendela untuk Connect dan pilih Microsoft Excel dari Aplikasi daftar drop-down.
  3. Dalam Awal beban perilaku daftar drop-down, pilih Permulaan.
  4. Hapus frmAddin dari proyek.
  5. Dari Project jendela, klik kanan Menghubungkan item dan pilih Lihat kode.
  6. Menghapus semua kode di jendela kode desainer. Kode ini bekerja untuk BB tambahan tetapi tidak kantor tambahan.
  7. Tambahkan kode berikut untuk desainer:
       Option Explicit
    
       Dim oXL As Object
       Dim WithEvents MyButton As Office.CommandBarButton
    
       Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
        ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
        ByVal AddInInst As Object, custom() As Variant)
          On Error Resume Next
          MsgBox "My Addin started in " & Application.Name
       
          Set oXL = Application
       
          Set MyButton = oXL.CommandBars("Standard").Controls.Add(1)
             With MyButton
                .Caption = "My Custom Button"
                .Style = msoButtonCaption
    
              ' The following items are optional, but recommended. 
              ' The Tag property lets you quickly find the control 
              ' and helps MSO keep track of it when there is more than
              ' one application window visible. The property is required
              ' by some Office applications and should be provided.
    
                .Tag = "My Custom Button"
     
              ' The OnAction property is optional but recommended. 
              ' It should be set to the ProgID of the add-in, such that if
              ' the add-in is not loaded when a user presses the button,
              ' MSO loads the add-in automatically and then raises
              ' the Click event for the add-in to handle. 
    
                .OnAction = "!<" & AddInInst.ProgId & ">"
    
                .Visible = True
             End With
       
       End Sub
    
       Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _
          AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
          On Error Resume Next
          MsgBox "My Addin was disconnected by " & _
             IIf(RemoveMode = ext_dm_HostShutdown, _
             "Excel shutdown.", "end user.")
          
          MyButton.Delete
          Set MyButton = Nothing
          Set oXL = Nothing
        End Sub
    
       Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton, _
         CancelDefault As Boolean)
          MsgBox "Our CommandBar button was pressed!"
       End Sub
  8. Menyimpan proyek dan membuat MyAddin.dll. Perancang akan mendaftar tambahan untuk Anda.
  9. Buka Microsoft Excel dan Anda akan melihat kotak pesan ketika tambahan dimuat dan diturunkan. Di toolbar standar, Anda akan memiliki tombol baru berlabel Tombol kustom bahwa kita menambahkan-akan menangani ketika dipilih.

Bangunan COM add-in dengan menggunakan alat-alat

Sementara bukan sebagai sederhana, Anda dapat membuat COM Add-In menggunakan Microsoft Visual Basic 5.0 dan Alat-alat kata kunci untuk langsung mengimplementasikan antarmuka IDTExtensibility2. Satu-satunya downside pendekatan ini adalah pendaftaran. Karena Microsoft Visual Basic tidak tahu bagaimana untuk menambahkan kunci yang diperlukan untuk mendaftar tambahan dengan kantor, Anda akan perlu untuk melakukan hal ini secara terpisah (utilitas kustom setup, atau menggunakan REG script).

Namun, keuntungan menggunakan alat-alat adalah lebih langsung dan efisien daripada menggunakan perancang, dan memungkinkan kita untuk membuat satu COM objek yang dapat bekerja dalam beberapa aplikasi Office (Alih-alih membuat objek Connect terpisah untuk setiap aplikasi yang kami ingin bekerja).

Berikut adalah langkah-langkah untuk menulis Add-In menggunakan menerapkan:
  1. Membuka Visual Basic dan membuat sebuah proyek ActiveX DLL baru. Nama proyek MyCOMAddin, dan nama kelas publik Menghubungkan.
  2. Dari Referensi kotak dialog (proyek | Referensi), menambahkan referensi ke perpustakaan objek Microsoft Office 9,0 (atau 10,0 untuk Office XP) dan perpustakaan jenis Microsoft Add-In desainer. Jika Anda tidak dapat menemukan Add-In desainer dalam daftar referensi, Anda harus mencari Msaddndr.dll atau Msaddndr.tlb, biasanya terletak di "C: program Files\Designer" folder.
  3. Dalam Kode jendela untuk Connect, tambahkan berikut:
       Option Explicit
       Implements IDTExtensibility2
    
       Dim oHostApp As Object
       Dim WithEvents MyButton As Office.CommandBarButton
    
      Private Sub IDTExtensibility2_OnConnection(ByVal Application As Object, _
         ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
    
         ByVal AddInInst As Object, custom() As Variant)
      
          On Error Resume Next
        ' Set a reference to the host application...
          Set oHostApp = Application
       
        ' If you aren't in startup, then manually call OnStartupComplete...
          If (ConnectMode <> ext_cm_Startup) Then _
             Call IDTExtensibility2_OnStartupComplete(custom)
          
       End Sub
    
       Private Sub IDTExtensibility2_OnStartupComplete(custom() As Variant)
          Dim oCommandBars As Office.CommandBars
          Dim oStandardBar As Office.CommandBar
       
          On Error Resume Next
        ' Set up a custom button on the "Standard" commandbar...
          Set oCommandBars = oHostApp.CommandBars
          If oCommandBars Is Nothing Then
           ' Outlook has the CommandBars collection on the Explorer object
             Set oCommandBars = oHostApp.ActiveExplorer.CommandBars
          End If
       
          Set oStandardBar = oCommandBars.Item("Standard")
          If oStandardBar Is Nothing Then
           ' Access names it's main toolbar Database
    
             Set oStandardBar = oCommandBars.Item("Database")
          End If
       
        ' In case the button was not deleted, use the exiting one...
          Set MyButton = oStandardBar.Controls.Item("My Custom Button")
             If MyButton Is Nothing Then
    
                Set MyButton = oStandardBar.Controls.Add(1)
                With MyButton
                   .Caption = "My Custom Button"
                   .Style = msoButtonCaption
     
              ' The following items are optional, but recommended. 
              ' The Tag property lets you quickly find the control 
              ' and helps MSO keep track of it when there is more than
              ' one application window visible. The property is required
              ' by some Office applications and should be provided.
    
                .Tag = "My Custom Button"
     
              ' The OnAction property is optional but recommended. 
              ' It should be set to the ProgID of the add-in, such that if
              ' the add-in is not loaded when a user presses the button,
              ' MSO loads the add-in automatically and then raises
              ' the Click event for the add-in to handle. 
    
                   .OnAction = "!<MyCOMAddin.Connect>"
    
                   .Visible = True
                End With
             End If
     
        ' Display a simple message to know which application you started in...
          MsgBox "Started in " & oHostApp.Name & "."
    
          Set oStandardBar = Nothing
          Set oCommandBars = Nothing
       End Sub
    
       Private Sub IDTExtensibility2_OnDisconnection(ByVal RemoveMode As _
         AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
    
          On Error Resume Next
          If RemoveMode <> ext_dm_HostShutdown Then _
             Call IDTExtensibility2_OnBeginShutdown(custom)
          
          Set oHostApp = Nothing
    
       End Sub
    
       Private Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)
          On Error Resume Next
        ' Notify the user you are shutting down, and delete the button...
          MsgBox "Our custom Add-In is unloading."
          MyButton.Delete
          Set MyButton = Nothing
       End Sub
    
       Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,    CancelDefault As Boolean)
          MsgBox "Our CommandBar button was pressed!"
       End Sub
    
       Private Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)
          'You do nothing if this is called, but you need to
          'add a comment so Visual Basic properly implements the function...
       End Sub
  4. Menyimpan proyek dan membuat MyCOMAddin.dll. Namun, sebelum Anda add-in akan bekerja Anda perlu untuk menghubungkannya dengan masing-masing aplikasi Office yang Anda ingin menjalankannya. Di dunia nyata, utilitas konfigurasi dapat melakukannya ketika DLL diinstal. Untuk sampel ini, Anda akan memanggil fungsi pendaftaran langsung dari IDE Visual Basic.
  5. Menambahkan modul baru untuk proyek. Dalam kode untuk Module1, tambahkan berikut:
       Option Explicit
    
       Private Declare Function RegCreateKeyEx Lib "advapi32.dll" _
       Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
       ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As _
       Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, _
       phkResult As Long, lpdwDisposition As Long) As Long
       
       Private Declare Function RegSetValueEx Lib "advapi32.dll" _
       Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As _
       String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _
       ByVal cbData As Long) As Long
       
       Private Declare Function RegDeleteKey Lib "advapi32.dll" _
       Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) _
       As Long
       
       Private Declare Function RegCloseKey Lib "advapi32.dll" _
       (ByVal hKey As Long) As Long
    
       Private Const HKEY_CURRENT_USER = &H80000001
       Private Const KEY_ALL_ACCESS = &H1F0037
       Private Const REG_CREATED_NEW_KEY = &H1
       Private Const REG_SZ = 1
       Private Const REG_DWORD = 4
    
       'These are the settings for your Add-in...
       Private Const PROGID As String = "MyCOMAddin.Connect"
       Private Const DESCRIPTION As String = "My VB5/6 COM Add-In Sample"
       Private Const LOADBEHAVIOR As Long = 3
       Private Const SAFEFORCOMMANDLINE As Long = 0
    
    
       Public Sub RegisterAll()
          RegisterOfficeAddin "Access"
          RegisterOfficeAddin "Excel"
          RegisterOfficeAddin "FrontPage"
          RegisterOfficeAddin "Outlook"
          RegisterOfficeAddin "PowerPoint"
          RegisterOfficeAddin "Word"
       End Sub
    
       Public Sub UnregisterAll()
          UnRegisterOfficeAddin "Access"
          UnRegisterOfficeAddin "Excel"
          UnRegisterOfficeAddin "FrontPage"
          UnRegisterOfficeAddin "Outlook"
          UnRegisterOfficeAddin "PowerPoint"
          UnRegisterOfficeAddin "Word"
       End Sub
    
       Public Sub RegisterOfficeAddin(sTargetApp As String)
          Dim sRegKey As String
          Dim nRet As Long, dwTmp As Long
          Dim hKey As Long
       
          sRegKey = "Software\Microsoft\Office\" & sTargetApp _
             & "\Addins\" & PROGID
       
          nRet = RegCreateKeyEx(HKEY_CURRENT_USER, sRegKey, 0, _
             vbNullString, 0, KEY_ALL_ACCESS, 0, hKey, dwTmp)
          
          If nRet = 0 Then
             If dwTmp = REG_CREATED_NEW_KEY Then
                Call RegSetValueEx(hKey, "FriendlyName", 0, _
                   REG_SZ, ByVal PROGID, Len(PROGID))
                Call RegSetValueEx(hKey, "Description", 0, _
                   REG_SZ, ByVal DESCRIPTION, Len(DESCRIPTION))
                Call RegSetValueEx(hKey, "LoadBehavior", 0, _
                   REG_DWORD, LOADBEHAVIOR, 4)
                Call RegSetValueEx(hKey, "CommandLineSafe", 0, _
                   REG_DWORD, SAFEFORCOMMANDLINE, 4)
             End If
             Call RegCloseKey(hKey)
          End If
       
       End Sub
    
       Public Sub UnRegisterOfficeAddin(sTargetApp As String)
          Dim sRegKey As String
          sRegKey = "Software\Microsoft\Office\" & sTargetApp _
             & "\Addins\" & PROGID
       
           Call RegDeleteKey(HKEY_CURRENT_USER, sRegKey)
       
       End Sub
  6. Dari Segera jendela (lihat | Segera jendela), jenis RegisterAll, kemudian tekan ENTER. Ini akan mendaftar tambahan dengan semua aplikasi Office didukung (Access, Excel, FrontPage, Outlook, PowerPoint, dan Word).
  7. Terbuka salah satu aplikasi Office terdaftar sebelumnya. Melihat kotak pesan pada startup and shutdown, dan tombol kustom ditambahkan ke toolbar standar.
  8. Bila Anda ingin membatalkan registrasi tambahan, ketik UnregisterAll di jendela segera Visual Basic dan kemudian tekan ENTER.

REFERENSI

"Microsoft Office 2000 Visual Basic Programmer's Guide", bab 11. Add-in, template, Wizards, dan perpustakaan.

Untuk informasi lebih lanjut tentang menulis peralatan tambahan COM, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
230689CONTOH: Comaddin.exe Office 2000 COM add-in ditulis dalam Visual C++
190253 VB6 desainer tidak bekerja di VB5
Untuk informasi lebih lanjut tentang mengembangkan solusi berbasis Web untuk Microsoft Internet Explorer, kunjungi Web site Microsoft berikut:
http://MSDN.Microsoft.com/IE/
Catatan Ketika Anda menambahkan menu item untuk Office Word dari Visual Basic COM add-in dengan menggunakan langkah-langkah yang tercantum dalam artikel ini atau dengan menggunakan metode yang sama, menu item tidak bekerja seperti yang diharapkan. Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
313948Kata kehilangan referensi ke objek COM item menu (CommandBarControl)

Properti

ID Artikel: 238228 - Kajian Terakhir: 20 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Word 2002
  • Microsoft Word 2000
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Kata kunci: 
kbautomation kbhowto kbmt KB238228 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:238228

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com