Werken met VBA macro ' s
Visual Basic for Applications (VBA) for Microsoft Word is een eenvoudige maar krachtige programmeertaal die kan worden gebruikt om de functionaliteit uit te breiden. Aspose.Words API biedt drie klassen om toegang te krijgen tot de VBA project broncode:
- De klasse VBAProject geeft toegang tot VBA projectinformatie
- De klasse VBAModulesCollection retourneert de verzameling van VBA projectmodules
- De VbaModule klasse geeft toegang tot de VBA project module
Een VBA Project maken
Aspose.Words API geeft Document.VbaProject
eigenschap om VbaProject in het document te krijgen of in te stellen.
Het volgende codevoorbeeld laat zien hoe u een VBA project en VBA Module maakt, samen met basiseigenschappen zoals naam en Type:
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"); |
Macro ' S Lezen
Aspose.Words biedt gebruikers ook de mogelijkheid om VBA macro ' s te lezen.
Het volgende codevoorbeeld laat zien hoe VBA macro ' s uit het document gelezen moeten worden:
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; | |
} | |
} |
Macro ' s schrijven of wijzigen
Met behulp van Aspose.Words kunnen gebruikers VBA macro ' s wijzigen.
Het volgende codevoorbeeld laat zien hoe VBA Macro ' s te wijzigen met behulp van de eigenschap 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); |
Kloon VBA Project
Met Aspose.Words is het ook mogelijk om VBA projecten te klonen.
Het volgende codevoorbeeld laat zien hoe het VBA Project gekloond kan worden met de eigenschap Clone waarmee een kopie van het bestaande project gemaakt wordt:
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"); |
Module VBA Klonen
U kunt ook VBA modules klonen indien nodig.
Het volgende codevoorbeeld laat zien hoe de Module VBA gekloond kan worden met de eigenschap Clone waarmee een kopie van het bestaande project gemaakt wordt:
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"); |