Proyek VBA

Proyek VBA

Panduan ini menunjukkan cara memeriksa dan memodifikasi proyek VBA yang tertanam dalam dokumen yang mendukung makro dengan Aspose.Words FOSS untuk .NET. Aspose.Words FOSS untuk .NET dapat memeriksa dan memodifikasi proyek VBA yang tertanam dalam dokumen yang mendukung makro (.docm) — modul-modulnya, kode sumber, dan referensi perpustakaan — melalui Document.VbaProject dan model objek VbaProject/VbaModule. Ini adalah inspeksi dan penyuntingan proyek, bukan eksekusi makro: Aspose.Words tidak pernah menyertakan runtime VBA, baik dalam produk komersial maupun edisi FOSS ini, sehingga kode VBA dibaca dan dimodifikasi sebagai data, bukan dijalankan.


Mengakses Proyek VBA Dokumen

Document.VbaProject mengembalikan VbaProject, atau null jika dokumen tidak memiliki proyek VBA. Document.HasMacros melaporkan apakah proyek VBA ada tanpa Anda harus mengakses VbaProject terlebih dahulu. VbaProject.Name, CodePage, IsSigned, dan IsProtected menggambarkan proyek itu sendiri.


Membaca dan Menyunting Modul

VbaProject.Modules mengembalikan VbaModuleCollection. Indeks ke dalamnya dengan nama untuk mencari modul tertentu (mis. modules["ModuleName"]), atau mengenumerasi seluruh koleksi. Setiap VbaModule mengekspos Name, Type (sebuah VbaModuleType: DocumentModule, ProceduralModule, ClassModule, atau DesignerModule), dan — secara penting — SourceCodenya sebagai properti string yang dapat ditulisi, sehingga sumber modul dapat dibaca dan ditulis kembali secara programatik. VbaModuleCollection.Add(vbaModule) dan Remove(module) menambah atau menghapus modul dari proyek.


Referensi Perpustakaan

VbaProject.References mengembalikan VbaReferenceCollection dari objek VbaReference — perpustakaan tipe Automation dan proyek VBA lainnya yang menjadi dependensi kode makro. VbaReference.Type melaporkan VbaReferenceType (Registered, Project, Original, atau Control), dan LibId mengidentifikasi perpustakaan yang dirujuk. VbaReferenceCollection.Remove(item) / RemoveAt(index) menghapus referensi.


Menghapus Proyek VBA

Document.RemoveMacros() menghapus proyek VBA dari dokumen sepenuhnya — berguna untuk menghasilkan salinan dokumen bebas makro yang awalnya dikirim dengan makro.


Tips dan Praktik Terbaik

  • Periksa Document.HasMacros sebelum menyentuh Document.VbaProject untuk menghindari penanganan null pada dokumen yang tidak pernah memiliki makro.
  • Anggap VbaModule.SourceCode sebagai teks biasa — karena tidak ada runtime VBA, mengeditnya tidak memvalidasi kode; VBA yang rusak masih dapat diproses kembali, tetapi tidak akan berjalan dengan benar di Word sampai diperbaiki.
  • Gunakan VbaProject.IsSigned/IsProtected untuk mendeteksi proyek yang ditandatangani atau dilindungi sebelum mencoba memodifikasi modul-modulnya.
  • Document.RemoveMacros() adalah cara paling sederhana untuk menghapus makro bagi salinan distribusi “clean”, daripada secara manual membersihkan setiap modul.

Masalah Umum

MasalahPenyebabPerbaikan
Document.VbaProject adalah nullDokumen tidak memiliki proyek VBAPeriksa Document.HasMacros terlebih dahulu sebelum mengakses anggota VbaProject
Mengharapkan makro dijalankan setelah mengedit SourceCodeAspose.Words tidak memiliki mesin eksekusi VBAGunakan API ini hanya untuk membaca/mengubah sumber dan struktur makro; jalankan dokumen yang dihasilkan di lingkungan dengan runtime VBA, seperti Microsoft Word, untuk mengeksekusi kode
Mengindeks VbaModuleCollection berdasarkan nama tidak menghasilkan apa-apaKetidaksesuaian nama modul (case atau ejaan tepat)Enumerasikan VbaProject.Modules untuk mengonfirmasi nama modul yang tepat

FAQ

Apakah Aspose.Words FOSS untuk .NET dapat menjalankan makro VBA dalam dokumen?

Tidak. Baik edisi ini maupun produk Aspose.Words komersial tidak menyertakan mesin eksekusi VBA — proyek VBA dibaca dan dimodifikasi sebagai data (sumber modul, referensi, metadata proyek), tidak pernah dijalankan.

Bagaimana cara membaca kode sumber makro?

Dapatkan modul dengan mengindeks VbaProject.Modules berdasarkan nama (misalnya modules["ModuleName"]), kemudian baca properti SourceCode-nya.

Apakah saya dapat menambahkan modul VBA baru ke dokumen?

Ya — buat sebuah VbaModule dan tambahkan ke VbaModuleCollection proyek melalui Add(vbaModule).

Bagaimana cara saya memeriksa apakah sebuah dokumen bahkan memiliki makro sebelum memprosesnya?

Baca Document.HasMacros; itu true jika dokumen membawa proyek VBA, tanpa Anda harus mengakses Document.VbaProject terlebih dahulu.

Bagaimana cara menghapus semua makro dari sebuah dokumen?

Panggil Document.RemoveMacros().


API Reference Ringkasan

Kelas / MetodeDeskripsi
Document.VbaProjectVbaProject dokumen, atau null jika tidak memiliki makro
Document.HasMacrosApakah proyek VBA ada
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModuleSatu modul: Name, Type (VbaModuleType), dapat ditulis SourceCode
VbaModuleCollectionAdd(), pengindeks berdasarkan nama, Remove(), Count
VbaReference / VbaReferenceCollectionPerpustakaan tipe yang dirujuk: Type (VbaReferenceType), LibId
Document.RemoveMacros()Menghapus proyek VBA dari dokumen

Lihat Juga

 Bahasa Indonesia