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.
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:
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:
Mulai Microsoft Visual Basic 6.0 dan pilih Addin sebagai jenis proyek. Ini harus menambahkan class desainer untuk proyek (Connect) dan bentuk (frmAddin).
Terbuka Perancang jendela untuk Connect dan pilih Microsoft Excel dari Aplikasi daftar drop-down.
Dalam Awal beban perilaku daftar drop-down, pilih Permulaan.
Hapus frmAddin dari proyek.
Dari Project jendela, klik kanan Menghubungkan item dan pilih Lihat kode.
Menghapus semua kode di jendela kode desainer. Kode ini bekerja untuk BB tambahan tetapi tidak kantor tambahan.
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
Menyimpan proyek dan membuat MyAddin.dll. Perancang akan mendaftar tambahan untuk Anda.
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:
Membuka Visual Basic dan membuat sebuah proyek ActiveX DLL baru. Nama proyek MyCOMAddin, dan nama kelas publik Menghubungkan.
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.
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
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.
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
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).
Terbuka salah satu aplikasi Office terdaftar sebelumnya. Melihat kotak pesan pada startup and shutdown, dan tombol kustom ditambahkan ke toolbar standar.
Bila Anda ingin membatalkan registrasi tambahan, ketik UnregisterAll di jendela segera Visual Basic dan kemudian tekan ENTER.
"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:
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:
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
Seberapa besar upaya Anda untuk menggunakan artikel ini?
Sangat sedikit
Sedikit
Sedang
Besar
Sangat besar
Berikan saran tentang apa yang dapat kami lakukan untuk menyempurnakan informasi ini
Terima kasih! Masukan Anda akan digunakan untuk membantu kami meningkatkan konten dukungan. Untuk opsi bantuan lainnya, kunjungi Halaman Beranda Bantuan dan Dukungan.