Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan ini menunjukkan cara memanggil metode dalam kustomisasi tingkat dokumen untuk Microsoft Office Excel dari kode Visual Basic for Applications (VBA) dalam buku kerja. Prosedur ini melibatkan tiga langkah dasar: menambahkan metode ke Sheet1
kelas item host, mengekspos metode ke kode VBA dalam buku kerja, lalu memanggil metode dari kode VBA dalam buku kerja.
Berlaku untuk: Informasi dalam topik ini berlaku untuk proyek tingkat dokumen untuk Excel dan Word. 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 juga berlaku untuk proyek tingkat dokumen untuk Word.
Panduan ini mengilustrasikan tugas-tugas berikut:
Membuat buku kerja yang berisi kode VBA.
Mempercayai lokasi buku kerja dengan menggunakan Pusat Kepercayaan di Excel.
Menambahkan metode ke
Sheet1
kelas item host.Mengekstrak antarmuka untuk
Sheet1
kelas item host.Mengekspos metode ke kode VBA.
Memanggil metode 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 Visual Studio.
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 buku kerja yang berisi kode VBA
Langkah pertama adalah membuat buku kerja dengan makro aktif yang berisi makro VBA sederhana. Sebelum Anda bisa mengekspos kode dalam kustomisasi ke VBA, buku kerja harus sudah berisi kode VBA. Jika tidak, Visual Studio tidak dapat mengubah proyek VBA untuk mengaktifkan kode VBA untuk memanggil ke perakitan kustomisasi.
Jika Anda sudah memiliki buku kerja yang berisi kode VBA yang ingin Anda gunakan, Anda bisa melewati langkah ini.
Untuk membuat buku kerja yang berisi kode VBA
Mulai Excel.
Simpan dokumen aktif sebagai Buku Kerja Yang Diaktifkan Makro Excel (*.xlsm) dengan nama WorkbookWithVBA. Simpan ke 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 pada 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 mendefinisikan fungsi sederhana yang tidak melakukan apa-apa. Satu-satunya tujuan fungsi ini adalah untuk memastikan bahwa proyek VBA ada di buku kerja. Ini diperlukan untuk langkah-langkah selanjutnya dalam panduan ini.
Sub EmptySub() End Sub
Simpan dokumen dan keluar dari Excel.
Membuat proyek
Sekarang Anda bisa membuat proyek tingkat dokumen untuk Excel yang menggunakan buku kerja dengan makro aktif yang Anda buat sebelumnya.
Untuk membuat proyek baru
Mulai Visual Studio.
Pada menu File, arahkan ke Baru, lalu klik Proyek.
Di panel templat, perluas Visual C#, lalu perluas Office/SharePoint.
Pilih simpul Add-in Office.
Dalam daftar templat proyek, pilih buku kerja Excel 2010 atau proyek Buku Kerja Excel 2013.
Dalam kotak Nama , ketik CallingCodeFromVBA.
Klik OK.
Wizard Visual Studio Tools for Office Project terbuka.
Pilih Salin dokumen yang sudah ada, dan, di kotak Jalur lengkap dokumen yang sudah ada, tentukan lokasi buku kerja WorkbookWithVBA yang Anda buat sebelumnya. Jika Anda menggunakan buku kerja berkemampuan makro Anda sendiri, tentukan lokasi buku kerja tersebut sebagai gantinya.
Klik Selesai.
Visual Studio membuka buku kerja WorkbookWithVBA di perancang dan menambahkan proyek CallingCodeFromVBA ke Penjelajah Solusi.
Mempercayai lokasi buku kerja
Sebelum Anda bisa mengekspos kode dalam solusi Anda ke kode VBA dalam buku kerja, Anda harus mempercayai VBA dalam buku kerja untuk dijalankan. Ada beberapa cara untuk melakukan ini. Dalam panduan ini, Anda akan menyelesaikan tugas ini dengan mempercayai lokasi buku kerja di Pusat Kepercayaan di Excel.
Untuk mempercayai lokasi buku kerja
Mulai Excel.
Klik tab File .
Klik tombol Opsi Excel.
Di panel kategori, klik Pusat Kepercayaan.
Di panel detail, klik Pusat Kepercayaan Pengaturan.
Di panel kategori, klik Lokasi Tepercaya.
Di panel detail, klik Tambahkan lokasi baru.
Dalam kotak dialog Lokasi Tepercaya Microsoft Office, telusuri ke folder yang berisi proyek CallingCodeFromVBA .
Pilih Subfolder lokasi ini juga tepercaya.
Dalam kotak dialog Lokasi Tepercaya Microsoft Office, klik OK.
Dalam kotak dialog Pusat Kepercayaan, klik OK.
Dalam kotak dialog Opsi Excel, klik OK.
Keluar dari Excel.
Menambahkan metode ke kelas Sheet1
Sekarang setelah proyek VBA disiapkan, tambahkan metode publik ke Sheet1
kelas item host yang dapat Anda panggil dari kode VBA.
Untuk menambahkan metode ke kelas Sheet1
Di Penjelajah Solusi, klik kanan Sheet1.cs, lalu klik Tampilkan Kode.
File Sheet1.cs terbuka di Editor Kode.
Tambahkan kode berikut ke kelas
Sheet1
. MetodeCreateVstoNamedRange
ini membuat objek baru NamedRange pada rentang yang ditentukan. Metode ini juga membuat penanganan aktivitas untuk Selected peristiwa NamedRange. Nanti dalam panduan ini, Anda akan memanggilCreateVstoNamedRange
metode dari kode VBA dalam dokumen.private Microsoft.Office.Tools.Excel.NamedRange namedRange1; public void CreateVstoNamedRange(Excel.Range range, string name) { if (!this.Controls.Contains(name)) { namedRange1 = this.Controls.AddNamedRange(range, name); namedRange1.Selected += new Excel.DocEvents_SelectionChangeEventHandler( namedRange1_Selected); } else { MessageBox.Show("A named range with this specific name " + "already exists on the worksheet."); } } private void namedRange1_Selected(Microsoft.Office.Interop.Excel.Range Target) { MessageBox.Show("This named range was created by Visual Studio " + "Tools for Office."); }
Tambahkan metode berikut ke kelas
Sheet1
. Metode ini mengambil alih GetAutomationObject metode untuk mengembalikan instansSheet1
kelas saat ini.protected override object GetAutomationObject() { return this; }
Terapkan atribut berikut sebelum baris
Sheet1
pertama deklarasi kelas. Atribut ini membuat kelas terlihat oleh COM, tetapi tanpa menghasilkan antarmuka kelas.[System.Runtime.InteropServices.ComVisible(true)] [System.Runtime.InteropServices.ClassInterface( System.Runtime.InteropServices.ClassInterfaceType.None)]
Mengekstrak antarmuka untuk kelas Sheet1
Sebelum dapat mengekspos CreateVstoNamedRange
metode ke kode VBA, Anda harus membuat antarmuka publik yang menentukan metode ini, dan Anda harus mengekspos antarmuka ini ke COM.
Untuk mengekstrak antarmuka untuk kelas Sheet1
Dalam file kode Sheet1.cs, klik di mana saja di
Sheet1
kelas .Pada menu Refaktor , klik Ekstrak Antarmuka.
Dalam kotak dialog Ekstrak Antarmuka , dalam kotak Pilih anggota publik untuk membentuk antarmuka , klik entri untuk metode tersebut
CreateVstoNamedRange
.Klik OK.
Visual Studio menghasilkan antarmuka baru bernama
ISheet1
, dan memodifikasi definisiSheet1
kelas sehingga mengimplementasikanISheet1
antarmuka. Visual Studio juga membuka file ISheet1.cs di Editor Kode.Dalam file ISheet1.cs, ganti
ISheet1
deklarasi antarmuka dengan kode berikut. Kode ini membuat antarmuka menjadiISheet1
publik, dan menerapkan ComVisibleAttribute atribut untuk membuat antarmuka terlihat oleh COM.[System.Runtime.InteropServices.ComVisible(true)] public interface ISheet1 { void CreateVstoNamedRange(Microsoft.Office.Interop.Excel.Range range, string name); }
Bangun proyek.
Mengekspos metode ke kode VBA
Untuk mengekspos CreateVstoNamedRange
metode ke kode VBA dalam buku kerja, atur properti ReferenceAssemblyFromVbaProject untuk Sheet1
item host ke True.
Untuk mengekspos metode ke kode VBA
Di Penjelajah Solusi, klik dua kali Sheet1.cs.
File WorkbookWithVBA terbuka di perancang, dengan Lembar1 terlihat.
Di jendela Properti , pilih properti ReferenceAssemblyFromVbaProject , dan ubah nilainya menjadi True.
Klik OK dalam pesan yang ditampilkan.
Bangun proyek.
Memanggil metode dari kode VBA
Sekarang Anda dapat memanggil CreateVstoNamedRange
metode dari kode VBA dalam buku kerja.
Catatan
Dalam panduan ini, Anda akan menambahkan kode VBA ke buku kerja saat menelusuri kesalahan proyek. Kode VBA yang Anda tambahkan ke dokumen ini akan ditimpa saat Anda membuat proyek berikutnya, karena Visual Studio mengganti dokumen di folder output build dengan salinan dokumen dari folder proyek utama. Jika Anda ingin menyimpan kode VBA, Anda dapat menyalinnya ke dalam dokumen di folder proyek. Untuk informasi selengkapnya, lihat Menggabungkan VBA dan kustomisasi tingkat dokumen.
Untuk memanggil metode dari kode VBA
Tekan F5 untuk menjalankan proyek Anda.
Pada tab Pengembang , di grup Kode , klik Visual Basic.
Editor Visual Basic terbuka.
Pada menu Sisipkan , klik Modul.
Tambahkan kode berikut ke modul baru.
Kode ini memanggil
CreateTable
metode dalam rakitan kustomisasi. Makro mengakses metode ini dengan menggunakan metode globalGetManagedClass
untuk mengaksesSheet1
kelas item host yang Anda ekspos ke kode VBA. MetodeGetManagedClass
ini secara otomatis dihasilkan ketika Anda mengatur properti ReferenceAssemblyFromVbaProject sebelumnya dalam panduan ini.Sub CallVSTOMethod() Dim VSTOSheet1 As CallingCodeFromVBA.Sheet1 Set VSTOSheet1 = GetManagedClass(Sheet1) Call VSTOSheet1.CreateVstoNamedRange(Sheet1.Range("A1"), "VstoNamedRange") End Sub
Tekan F5.
Di buku kerja yang terbuka, klik sel A1 di Lembar1. Verifikasi bahwa kotak pesan muncul.
Keluar dari Excel tanpa menyimpan perubahan Anda.
Langkah berikutnya
Anda bisa mempelajari selengkapnya tentang memanggil kode di solusi Office dari VBA dalam topik ini:
Kode panggilan dalam item host dalam kustomisasi Visual Basic dari VBA. Proses ini berbeda dari proses Visual C#. Untuk informasi selengkapnya, lihat Panduan: Kode panggilan dari VBA dalam proyek Visual Basic.
Kode panggilan dalam Add-in VSTO dari VBA. Untuk informasi selengkapnya, lihat Panduan: Kode panggilan di Add-in VSTO dari VBA.