Bagaimana untuk secara dinamis menambah dan menjalankan makro VBA dari Visual Basic

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 219905 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Kapan automating kantor produk dari Visual Basic, mungkin berguna untuk memindahkan bagian dari kode ke Microsoft Visual Basic untuk Aplikasi (VBA) modul yang dapat dijalankan di dalam ruang proses server. Ini dapat meningkatkan keseluruhan untuk aplikasi Anda kecepatan eksekusi dan membantu mengurangi masalah jika server hanya melaksanakan tindakan ketika membuat panggilan dalam proses.

Artikel ini menunjukkan bagaimana untuk secara dinamis menambahkan VBA modul untuk menjalankan aplikasi Office dari Visual Basic, dan kemudian panggilan makro untuk mengisi lembar kerja dalam proses.

INFORMASI LEBIH LANJUT

Contoh berikut menunjukkan memasukkan kode modul ke dalam Microsoft Excel, namun Anda dapat menggunakan teknik yang sama untuk kata dan PowerPoint karena keduanya menggabungkan mesin VBA yang sama.

Sampel menggunakan file teks statis untuk kode modul yang dimasukkan ke dalam Excel. Anda mungkin ingin mempertimbangkan bergerak kode ke file sumber daya yang Anda dapat mengkompilasi ke dalam aplikasi Anda, dan kemudian ekstrak ke berkas sementara bila diperlukan pada jangka waktu. Ini akan membuat proyek lebih mudah dikelola untuk distribusi ulang.

Mulai dengan Microsoft Office XP, pengguna harus memberikan akses ke model object VBA sebelum otomatisasi kode ditulis untuk memanipulasi VBA akan bekerja. Ini adalah fitur keamanan baru dengan kantor XP. Untuk informasi lebih lanjut, lihat artikel Basis Pengetahuan berikut:
282830 Akses program Office XP VBA proyek ditolak

Langkah-langkah untuk membangun sampel

  1. Pertama, buat berkas teks yang bernama KbTest.bas (tanpa perpanjangan dari .txt). Ini adalah modul kode yang kita akan memasukkan ke Excel pada run-time.
  2. Dalam file teks, menambahkan baris kode berikut:
       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 file teks untuk C:\KbTest.bas direktori, kemudian tutup berkas.
  4. Mulai Visual Basic dan buat proyek standar. Form1 adalah dibuat secara default.
  5. Pada Project menu, klikReferensi, kemudian pilih sesuai jenis versi perpustakaan yang memungkinkan Anda untuk menggunakan ikatan ke Excel.

    Sebagai contoh, pilih salah satu dari berikut ini:
    • Untuk Microsoft Office Excel 2007, pilih perpustakaan 12,0.
    • Untuk Microsoft Office Excel 2003, pilih perpustakaan 11,0.
    • Microsoft Excel 2002, pilih perpustakaan 10,0.
    • Untuk Microsoft Excel 2000, pilih perpustakaan 9,0.
    • Untuk Microsoft Excel 97, pilih 8,0 perpustakaan.
  6. Tambahkan tombol untuk Form1, dan menempatkan kode berikut dalam Handler untuk tombol Klik acara:
       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. Pada melakukan hal ini, gunakan salah satu metode berikut:
    • Di Excel 2007, klik Microsoft Office tombol, lalu klik Excel pilihan. Klik Pusat Kepercayaan, lalu klik Pusat Trust pengaturan. Klik Pengaturan makro, klik untuk memilih Mempercayai akses ke model object proyek VBA Periksa kotak, dan kemudian klik Oke dua kali.
    • Pada Excel 2003 dan versi Excel sebelumnya, arahkan ke Makro pada Alat menu, dan kemudian klik Keamanan. Dalam Keamanan kotak dialog, klik Sumber terpercaya tab, dan kemudian klik untuk memilih Percaya akses untuk Visual Dasar proyek kotak centang.
  8. Menjalankan proyek Visual Basic.

REFERENSI

Untuk informasi lebih lanjut mengenai otomatisasi Office dari Visual Dasar, silakan lihat situs dukungan pengembangan kantor di berikut Alamat:
http://support.microsoft.com/ofd

Properti

ID Artikel: 219905 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0
Berlaku bagi:
  • 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
Kata kunci: 
kbexpertisebeginner kbautomation kbhowto kbmt KB219905 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:219905

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com