العمل مع VBA وحدات الماكرو

Visual Basic للتطبيقات (VBA) ل Microsoft Word هي لغة برمجة بسيطة ولكنها قوية يمكن استخدامها لتوسيع الوظائف. Aspose.Words API يوفر ثلاث فئات للوصول إلى VBA شفرة مصدر المشروع:

  • توفر فئة VBAProject الوصول إلى معلومات المشروع VBA
  • تقوم فئة VBAModulesCollection بإرجاع مجموعة وحدات المشروع VBA
  • توفر فئة VbaModule الوصول إلى وحدة المشروع VBA

إنشاء مشروع VBA

Aspose.Words API يوفر 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");