การทำงานกับมาโครVBA
Visual Basicสำหรับการใช้งาน(VBA)สำหรับMicrosoft Wordเป็นภาษาการเขียนโปรแกรมที่เรียบง่ายแต่มีประสิทธิภาพที่ส Aspose.WordsAPIให้สามชั้นเรียนที่จะได้รับการเข้าถึงVBAรหัสแหล่งที่มาของโครงการ:
- คลาสVBAProjectให้การเข้าถึงข้อมูลโครงการVBA
- คลาสVBAModulesCollectionส่งคืนคอลเล็กชันของโมดูลโครงการVBA
- คลาสVbaModuleให้การเข้าถึงโมดูลโครงการVBA
สร้างโครงการVBA
Aspose.WordsAPIให้Document.VbaProject
คุณสมบัติที่จะได้รับหรือตั้งVbaProjectในเอกสาร.
ตัวอย่างรหัสต่อไปนี้แสดงให้เห็นถึงวิธีการสร้างVBAโครงการและVBAโมดูลพร้อมกับคุณสมบัติพื้นฐา:
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"); |
อ่านมาโคร
Aspose.Wordsนอกจากนี้ยังมีผู้ใช้ที่มีความสามารถในการอ่านVBAแมโคร.
ตัวอย่างรหัสต่อไปนี้แสดงวิธีการอ่านVBAแมโครจากเอกสาร:
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; | |
} | |
} |
เขียนหรือแก้ไขแมโคร
โดยใช้Aspose.Wordsผู้ใช้สามารถปรับเปลี่ยนVBAมาโคร.
ตัวอย่างรหัสต่อไปนี้แสดงวิธีการปรับเปลี่ยนVBAมาโครโดยใช้คุณสมบัติ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); |
โคลนVBAโครงการ
ด้วยAspose.Wordsก็ยังเป็นไปได้ที่จะโคลนVBAโครงการ.
ตัวอย่างรหัสต่อไปนี้แสดงวิธีการโคลนโปรเจ็กต์VBAโดยใช้คุณสมบัติCloneซึ่งสร้างสำเนาของโปร:
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"); |
โคลนVBAโมดูล
คุณยังสามารถโคลนโมดูลVBAถ้าจำเป็น.
ตัวอย่างรหัสต่อไปนี้แสดงวิธีการโคลนโมดูลVBAโดยใช้คุณสมบัติCloneซึ่งสร้างสำเนาของโปรเจ็ก:
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"); |