Bagikan melalui


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:

Membuat proyek Add-in VSTO

Langkah pertama adalah membuat proyek Add-in VSTO untuk Excel.

Untuk membuat proyek baru

  1. 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

  1. Pada menu Proyek , klik Tambahkan Kelas.

  2. 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.

  3. Tambahkan arahan berikut ke bagian atas file.

    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. 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 menambahkan ImportData 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

  1. Di Penjelajah Solusi, perluas Excel.

  2. Klik kanan ThisAddIn.cs atau ThisAddIn.vb, lalu klik Tampilkan Kode.

  3. Tambahkan kode berikut ke kelas ThisAddIn.

    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. 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

  1. Tekan F5 untuk menjalankan proyek Anda.

  2. Di Excel, simpan buku kerja aktif sebagai Buku Kerja Yang Diaktifkan Makro Excel (*.xlsm). Simpan di lokasi yang nyaman, seperti desktop.

  3. 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.

  4. Di grup Kode, klik Visual Basic.

    Editor Visual Basic terbuka.

  5. Di jendela Proyek , klik dua kali Buku Kerja Ini.

    File kode untuk ThisWorkbook objek terbuka.

  6. 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
    
  7. Tekan F5.

  8. Verifikasi bahwa lembar Data Impor baru telah ditambahkan ke buku kerja. Verifikasi juga bahwa sel A1 berisi string Ini adalah data saya.

  9. Keluar dari Excel.

Langkah berikutnya

Anda dapat mempelajari selengkapnya tentang pemrograman Add-in VSTO dari topik-topik ini: