การทำงานกับมาโคร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");