Bekerja dengan Makro VBA
Visual Basic untuk Aplikasi (VBA) untuk Microsoft Word adalah bahasa pemrograman yang sederhana namun kuat yang dapat digunakan untuk memperluas fungsionalitas. Aspose.Words API menyediakan tiga kelas untuk mendapatkan akses ke kode sumber proyek VBA:
- Kelas VBAProject menyediakan akses ke informasi proyek VBA
- Kelas VBAModulesCollection mengembalikan kumpulan modul proyek VBA
- Kelas VbaModule menyediakan akses ke modul proyek VBA
Buat Proyek VBA
Aspose.Words API menyediakan properti Document.VbaProject
untuk mendapatkan atau menyetel VbaProject dalam dokumen.
Contoh kode berikut mendemonstrasikan cara membuat proyek VBA dan Modul VBA bersama dengan properti dasar, mis. Nama dan Tipe:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
// Create a new VBA project. | |
System::SharedPtr<VbaProject> project = System::MakeObject<VbaProject>(); | |
project->set_Name(u"AsposeProject"); | |
doc->set_VbaProject(project); | |
// Create a new module and specify a macro source code. | |
System::SharedPtr<VbaModule> vbModule = System::MakeObject<VbaModule>(); | |
vbModule->set_Name(u"AsposeModule"); | |
vbModule->set_Type(VbaModuleType::ProceduralModule); | |
vbModule->set_SourceCode(u"New source code"); | |
// Add module to the VBA project. | |
doc->get_VbaProject()->get_Modules()->Add(vbModule); | |
doc->Save(outputDataDir + u"WorkingWithVbaMacros.CreateVbaMacros.docm"); |
Baca Makro
Aspose.Words juga memberi pengguna kemampuan untuk membaca makro VBA.
Contoh kode berikut menunjukkan cara membaca Makro VBA dari dokumen:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
if (doc->get_VbaProject() != nullptr) | |
{ | |
for (System::SharedPtr<VbaModule> module : System::IterateOver(doc->get_VbaProject()->get_Modules())) | |
{ | |
std::cout << module->get_SourceCode().ToUtf8String() << std::endl; | |
} | |
} |
Menulis atau Memodifikasi Makro
Dengan menggunakan Aspose.Words, pengguna dapat memodifikasi makro VBA.
Contoh kode berikut menunjukkan cara memodifikasi Makro VBA menggunakan properti SourceCode:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
System::SharedPtr<VbaProject> project = doc->get_VbaProject(); | |
System::String newSourceCode = u"Test change source code"; | |
// Choose a module, and set a new source code. | |
project->get_Modules()->idx_get(0)->set_SourceCode(newSourceCode); |
Klon VBA Proyek
Dengan Aspose.Words juga dimungkinkan untuk mengkloning proyek VBA.
Contoh kode berikut menunjukkan cara mengkloning Proyek VBA menggunakan properti Clone yang membuat salinan proyek yang ada:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
System::SharedPtr<VbaProject> project = doc->get_VbaProject(); | |
System::SharedPtr<Document> destDoc = System::MakeObject<Document>(); | |
// Clone the whole project. | |
destDoc->set_VbaProject(doc->get_VbaProject()->Clone()); | |
destDoc->Save(outputDataDir + u"WorkingWithVbaMacros.CloneVbaProject.docm"); |
Klon VBA Modul
Anda juga dapat mengkloning modul VBA jika diperlukan.
Contoh kode berikut menunjukkan cara mengkloning Modul VBA menggunakan properti Clone yang membuat salinan proyek yang ada:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
System::SharedPtr<VbaProject> project = doc->get_VbaProject(); | |
System::SharedPtr<Document> destDoc = System::MakeObject<Document>(); | |
destDoc->set_VbaProject(System::MakeObject<VbaProject>()); | |
// Clone a single module. | |
System::SharedPtr<VbaModule> copyModule = doc->get_VbaProject()->get_Modules()->idx_get(u"AsposeModule")->Clone(); | |
destDoc->get_VbaProject()->get_Modules()->Add(copyModule); | |
destDoc->Save(outputDataDir + u"WorkingWithVbaMacros.CloneVbaModule.docm"); |