Cara menambahkan secara dinamis dan menjalankan makro VBA dari Visual Basic

Dukungan untuk Office 2003 telah berakhir

Microsoft mengakhiri dukungan untuk Office 2003 pada 8 April 2014. Perubahan ini telah memengaruhi pemutakhiran perangkat lunak dan opsi keamanan Anda. Pelajari apa artinya ini bagi Anda dan cara untuk tetap terlindungi.

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 219905
Ringkasan
Ketika automating produk Office dari Visual Basic, mungkin akan berguna untuk memindahkan bagian dari kode ke Microsoft Visual Basic untuk aplikasi (VBA) modul yang dapat dijalankan dalam ruang proses server. Ini dapat meningkatkan keseluruhan kecepatan eksekusi untuk aplikasi Anda dan membantu mengurangi masalah jika server hanya menjalankan tindakan saat panggilan dibuat dalam proses.

Artikel ini menunjukkan cara menambahkan secara dinamis VBA modul untuk aplikasi Office berjalan dari Visual Basic, dan kemudian panggilan makro untuk mengisi lembar kerja dalam proses.
Informasi lebih lanjut
Contoh berikut menunjukkan memasukkan kode modul ke Microsoft Excel, tetapi Anda dapat menggunakan teknik yang sama untuk Word dan PowerPoint karena kedua memasukkan VBA mesin yang sama.

Sampel menggunakan file teks statis untuk modul kode yang disisipkan ke Excel. Anda mungkin ingin pertimbangkan memindahkan kode ke berkas sumber daya yang Anda dapat menyusun ke aplikasi Anda, dan kemudian ekstrak ke berkas sementara bila diperlukan saat menjalankan. Ini akan membuat proyek lebih mudah ditangani untuk distribusi ulang.

Dimulai dengan Microsoft Office XP, pengguna harus memberikan akses ke model objek VBA sebelum kode otomatisasi ditulis ke manipulasi VBA akan bekerja. Ini adalah fitur keamanan baru dengan Office XP. Untuk informasi selengkapnya, lihat artikel Pangkalan Pengetahuan berikut:
282830 Akses programatis ke Office XP projek VBA ditolak

Langkah-langkah untuk membangun sampel

  1. Pertama, buat berkas teks baru bernama KbTest.bas (tanpa ekstensi the.txt). Ini adalah modul kode yang akan kami masukkan ke Excel atrun-waktu.
  2. Dalam berkas teks, tambahkan baris kode berikut ini:
       Attribute VB_Name = "KbTest"   ' Your Microsoft Visual Basic for Applications macro function takes 1    ' parameter, the sheet object that you are going to fill.   Public Sub DoKbTest(oSheetToFill As Object)      Dim i As Integer, j As Integer      Dim sMsg As String      For i = 1 To 100         For j = 1 To 10            sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"            oSheetToFill.Cells(i, j).Value = sMsg         Next j      Next i   End Sub					
  3. Simpan berkas teks ke direktori C:\KbTest.bas, thenclose berkas.
  4. Mulai Visual Basic dan buat projek standard. Form1 iscreated secara asali.
  5. PadaProyekMenu, klikReferensi, kemudian pilih versi pustaka tipe sesuai yang memungkinkan Anda untuk menggunakan ikatan lama ke Excel.

    Misalnya, pilih salah satu dari berikut ini:
    • Untuk Microsoft Office Excel 2007, pilih Perpustakaan 12.0.
    • Untuk Microsoft Office Excel 2003, pilih Perpustakaan 11.0.
    • Untuk Microsoft Excel 2002, pilih Perpustakaan 10.0.
    • Untuk Microsoft Excel 2000, pilih Perpustakaan 9.0.
    • Untuk Microsoft Excel 97, pilih Perpustakaan 8.0.
  6. Tambahkan tombol tekan untuk Form1, dan tempat kode berikut dalam thehandler tombol tekan Klik peristiwa:
       Private Sub Command1_Click()      Dim oXL As Excel.Application      Dim oBook As Excel.Workbook      Dim oSheet As Excel.Worksheet      Dim i As Integer, j As Integer      Dim sMsg As String          ' Create a new instance of Excel and make it visible.      Set oXL = CreateObject("Excel.Application")      oXL.Visible = True       ' Add a new workbook and set a reference to Sheet1.      Set oBook = oXL.Workbooks.Add      Set oSheet = oBook.Sheets(1)          ' Demo standard Automation from out-of-process,    ' this routine simply fills in values of cells.      sMsg = "Fill the sheet from out-of-process"      MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground            For i = 1 To 100         For j = 1 To 10            sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"            oSheet.Cells(i, j).Value = sMsg         Next j      Next i          ' You're done with the first test, now switch sheets    ' and run the same routine via an inserted Microsoft Visual Basic     ' for Applications macro.      MsgBox "Done.", vbMsgBoxSetForeground      Set oSheet = oBook.Sheets.Add      oSheet.Activate            sMsg = "Fill the sheet from in-process"      MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground          ' The Import method lets you add modules to VBA at    ' run time. Change the file path to match the location    ' of the text file you created in step 3.      oXL.VBE.ActiveVBProject.VBComponents.Import "C:\KbTest.bas"       ' Now run the macro, passing oSheet as the first parameter      oXL.Run "DoKbTest", oSheet          ' You're done with the second test      MsgBox "Done.", vbMsgBoxSetForeground          ' Turn instance of Excel over to end user and release    ' any outstanding object references.      oXL.UserControl = True      Set oSheet = Nothing      Set oBook = Nothing      Set oXL = Nothing         End Sub					
  7. Untuk Excel 2002 dan versi yang lebih baru dari Excel, Anda harus mengaktifkan akses projek VBA. Yang harus dilakukan ini, gunakan salah satu dari metode berikut ini:
    • Di Excel 2007, klik tombol tekan Microsoft Office, dan kemudian klik Opsi Excel. Klik Pusat kepercayaan, dan kemudian klik Tataan Pusat kepercayaan. Klik Pengaturan makro, klik untuk memilih kotak centang Mempercayai akses ke model objek VBA proyek , dan kemudian klik OK dua kali.
    • Pada Excel 2003 dan versi Excel sebelumnya, arahkan ke makro pada menu alat , dan kemudian klik keamanan. Di kotak dialog keamanan , klik sumber terpercaya tab, dan kemudian klik untuk memilih kotak centang mempercayai akses ke proyek VisualBasic .
  8. Jalankan proyek Visual Basic.
Referensi
Untuk informasi selengkapnya mengenai otomatisasi Office dari Visual Basic, lihat situs dukungan pengembangan Office di alamat penyuratan berikut:
XL2007 OFF2007

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 219905 - Tinjauan Terakhir: 05/04/2015 00:33:00 - Revisi: 4.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Office Professional 2007, Microsoft Office Standard 2007, Microsoft Office Professional Edition 2003, Microsoft Office XP Developer Edition, Microsoft Office 2000 Developer Edition, Microsoft Office Excel 2003, Microsoft Excel 2010

  • kbexpertisebeginner kbautomation kbhowto kbmt KB219905 KbMtid
Tanggapan