Panduan: Kode panggilan dalam Add-in VSTO dari VBA
Panduan ini menunjukkan cara mengekspos objek dalam Add-in VSTO ke solusi Microsoft Office lainnya, termasuk Add-in Visual Basic for Applications (VBA) dan COM VSTO.
Berlaku untuk: Informasi dalam topik ini berlaku untuk proyek Add-in VSTO. Untuk informasi selengkapnya, lihat Fitur yang tersedia berdasarkan aplikasi Office likasi dan jenis proyek.
Meskipun panduan ini menggunakan Excel secara khusus, konsep yang ditunjukkan oleh panduan berlaku untuk templat proyek Add-in VSTO apa pun yang disediakan oleh Visual Studio.
Panduan ini mengilustrasikan tugas-tugas berikut:
Menentukan kelas yang dapat diekspos ke solusi Office lainnya.
Mengekspos kelas ke solusi Office lainnya.
Memanggil metode kelas dari kode VBA.
Catatan
Komputer Anda mungkin memperlihatkan nama atau lokasi yang berbeda untuk beberapa elemen antarmuka pengguna Visual Studio dalam petunjuk berikut. Edisi Visual Studio yang Anda miliki dan setelan yang Anda gunakan menentukan elemen-elemen ini. Untuk informasi selengkapnya, lihat Mempersonalisasi IDE.
Prasyarat
Anda memerlukan komponen berikut untuk menyelesaikan panduan ini:
Edisi Visual Studio yang menyertakan alat pengembang Microsoft Office. Untuk informasi selengkapnya, lihat Mengonfigurasi komputer untuk mengembangkan solusi Office.
Microsoft Excel
Membuat proyek Add-in VSTO
Langkah pertama adalah membuat proyek Add-in VSTO untuk Excel.
Untuk membuat proyek baru
Buat proyek Add-in Excel VSTO dengan nama ExcelImportData, menggunakan templat proyek Add-in Excel VSTO. Untuk informasi selengkapnya, lihat Cara: Membuat Proyek Office di Visual Studio.
Visual Studio membuka file kode ThisAddIn.cs atau ThisAddIn.vb dan menambahkan proyek ExcelImportData ke Penjelajah Solusi.
Tentukan kelas yang bisa Anda ekspos ke solusi Office lainnya
Tujuan dari panduan ini adalah untuk memanggil metode ImportData
kelas bernama AddInUtilities
dalam Add-in VSTO Anda dari kode VBA. Metode ini menulis string ke dalam sel A1 lembar kerja aktif.
Untuk mengekspos kelas ke AddInUtilities
solusi Office lainnya, Anda harus membuat kelas menjadi publik dan terlihat oleh COM. Anda juga harus mengekspos antarmuka IDispatch di kelas . Kode dalam prosedur berikut menunjukkan salah satu cara untuk memenuhi persyaratan ini. Untuk informasi selengkapnya, lihat Kode Panggilan di Add-in VSTO dari Solusi Office Lainnya.
Untuk menentukan kelas yang bisa Anda ekspos ke solusi Office lainnya
Pada menu Proyek , klik Tambahkan Kelas.
Dalam kotak dialog Tambahkan Item Baru, ubah nama kelas baru menjadi AddInUtilities, dan klik Tambahkan.
File AddInUtilities.cs atau AddInUtilities.vb terbuka di Editor Kode.
Tambahkan arahan berikut ke bagian atas file.
Ganti kelas
AddInUtilities
Anda dengan kode berikut.[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }
Kode ini membuat
AddInUtilities
kelas terlihat oleh COM, dan menambahkanImportData
metode ke kelas . Untuk mengekspos antarmuka IDispatch ,AddInUtilities
kelas juga memiliki ClassInterfaceAttribute atribut , dan mengimplementasikan antarmuka yang terlihat oleh COM.
Mengekspos kelas ke solusi Office lainnya
Untuk mengekspos kelas ke AddInUtilities
solusi Office lainnya, ambil alih RequestComAddInAutomationService metode di ThisAddIn
kelas . Dalam penimpaan Anda, kembalikan AddInUtilities
instans kelas.
Untuk mengekspos kelas AddInUtilities ke Solusi Office lainnya
Di Penjelajah Solusi, perluas Excel.
Klik kanan ThisAddIn.cs atau ThisAddIn.vb, lalu klik Tampilkan Kode.
Tambahkan kode berikut ke kelas
ThisAddIn
.Pada menu Build, klik Solusi Build.
Verifikasi bahwa solusi dibangun tanpa kesalahan.
Menguji Add-in VSTO
Anda dapat memanggil ke AddInUtilities
kelas dari beberapa jenis solusi Office yang berbeda. Dalam panduan ini, Anda akan menggunakan kode VBA dalam buku kerja Excel. Untuk informasi selengkapnya tentang tipe solusi Office lain yang juga bisa Anda gunakan, lihat Kode panggilan di Add-in VSTO dari solusi Office lainnya.
Untuk menguji Add-in VSTO Anda
Tekan F5 untuk menjalankan proyek Anda.
Di Excel, simpan buku kerja aktif sebagai Buku Kerja Yang Diaktifkan Makro Excel (*.xlsm). Simpan di lokasi yang nyaman, seperti desktop.
Pada Pita, klik tab Pengembang .
Catatan
Jika tab Pengembang tidak terlihat, Anda harus terlebih dahulu memperlihatkannya. Untuk informasi selengkapnya, lihat Cara: Memperlihatkan tab pengembang di Pita.
Di grup Kode, klik Visual Basic.
Editor Visual Basic terbuka.
Di jendela Proyek , klik dua kali Buku Kerja Ini.
File kode untuk
ThisWorkbook
objek terbuka.Tambahkan kode VBA berikut ke file kode. Kode ini pertama kali mendapatkan objek COMAddIn yang mewakili Add-in ExcelImportData VSTO. Kemudian, kode menggunakan properti Objek dari objek COMAddIn untuk memanggil
ImportData
metode .Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
Tekan F5.
Verifikasi bahwa lembar Data Impor baru telah ditambahkan ke buku kerja. Verifikasi juga bahwa sel A1 berisi string Ini adalah data saya.
Keluar dari Excel.
Langkah berikutnya
Anda dapat mempelajari selengkapnya tentang pemrograman Add-in VSTO dari topik-topik ini:
ThisAddIn
Gunakan kelas untuk mengotomatiskan aplikasi host dan melakukan tugas lain di proyek Add-in VSTO. Untuk informasi selengkapnya, lihat Add-in VsTO Program.Buat panel tugas kustom di Add-in VSTO. Untuk informasi selengkapnya, lihat Panel tugas kustom dan Cara: Menambahkan panel tugas kustom ke aplikasi.
Kustomisasi pita dalam Add-in VSTO. Untuk informasi selengkapnya, lihat Gambaran umum pita dan Cara: Mulai mengkustomisasi pita.