VBA Makrolarla Çalışma
Visual Basic for Applications (VBA) for Microsoft Word, işlevselliği genişletmek için kullanılabilecek basit ama güçlü bir programlama dilidir. Aspose.Words API VBA proje kaynak koduna erişmek için üç sınıf sağlar:
- VBAProject sınıfı, VBA proje bilgilerine erişim sağlar
- VBAModulesCollection sınıfı, VBA proje modüllerinin koleksiyonunu döndürür
- VbaModule sınıfı, VBA proje modülüne erişim sağlar
Bir VBA Projesi Oluşturun
Aspose.Words API belgede VbaProject almak veya ayarlamak için Document.VbaProject
özelliği sağlar.
Aşağıdaki kod örneği, Ad ve Tür gibi temel özelliklerle birlikte bir VBA projesinin ve VBA Modülünün nasıl oluşturulacağını gösterir:
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"); |
Makroları Oku
Aspose.Words ayrıca kullanıcılara VBA makrolarını okuma olanağı sağlar.
Aşağıdaki kod örneği, belgeden VBA Makroların nasıl okunacağını gösterir:
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; | |
} | |
} |
Makroları Yazma veya Değiştirme
Kullanıcılar Aspose.Words kullanarak VBA makrolarını değiştirebilir.
Aşağıdaki kod örneği, SourceCode özelliğini kullanarak VBA Makrolarının nasıl değiştirileceğini gösterir:
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 Projesi
Aspose.Words ile VBA projeleri klonlamak da mümkündür.
Aşağıdaki kod örneği, varolan projenin bir kopyasını oluşturan Clone özelliğini kullanarak VBA Projenin nasıl kopyalanacağını gösterir:
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 Modülü
Gerekirse VBA modüllerini de klonlayabilirsiniz.
Aşağıdaki kod örneği, varolan projenin bir kopyasını oluşturan Clone özelliğini kullanarak VBA Modülünün nasıl kopyalanacağını gösterir:
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"); |