العرض عبر VBA
تحتوي مساحة أسماء Aspose.Slides.Vba على فئات وواجهات للعمل مع الماكروز وكود VBA.
ملاحظة
عند تحويل عرض تقديمي يحتوي على ماكروز إلى تنسيق ملف مختلف (PDF، HTML، إلخ)، تتجاهل Aspose.Slides جميع الماكروز (لا يتم نقل الماكروز إلى الملف الناتج).
عندما تضيف الماكروز إلى عرض تقديمي أو تعيد حفظ عرض تقديمي يحتوي على ماكروز، تقوم Aspose.Slides ببساطة بكتابة بايتات الماكروز.
تقوم Aspose.Slides أبدًا بتشغيل الماكروز في عرض تقديمي.
إضافة ماكروز VBA
توفر Aspose.Slides فئة VbaProject للسماح لك بإنشاء مشاريع VBA (ومراجع المشروع) وتحرير الوحدات الموجودة. يمكنك استخدام واجهة IVbaProject لإدارة VBA المدمجة في عرض تقديمي.
- إنشاء مثيل من فئة Presentation.
- استخدام مُنشئ VbaProject لإضافة مشروع VBA جديد.
- إضافة وحدة إلى VbaProject.
- تعيين كود المصدر للوحدة.
- إضافة مراجع إلى
. - إضافة مراجع إلى Microsoft Office.
- ربط المراجع بمشروع VBA.
- حفظ العرض التقديمي.
يوضح هذا الكود C++ كيفية إضافة ماكرو VBA من الصفر إلى عرض تقديمي:
// مسار مجلد الوثائق.
const String outPath = u"../out/AddVBAMacros_out.pptm";
// إنشاء مثيل من فئة العرض التقديمي
SharedPtr<Presentation> presentation = MakeObject<Presentation>();
// إنشاء مشروع VBA جديد
presentation->set_VbaProject(MakeObject<VbaProject>());
// إضافة وحدة فارغة إلى مشروع VBA
SharedPtr<IVbaModule> module = presentation->get_VbaProject()->get_Modules()->AddEmptyModule(u"Module");
// تعيين كود المصدر للوحدة
module->set_SourceCode(u"Sub Test(oShape As Shape) MsgBox \"Test\" End Sub");
// إنشاء مرجع إلى <stdole>
SharedPtr<VbaReferenceOleTypeLib> stdoleReference =
MakeObject<VbaReferenceOleTypeLib>(u"stdole", u"*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// إنشاء مرجع إلى Office
SharedPtr<VbaReferenceOleTypeLib> officeReference =
MakeObject<VbaReferenceOleTypeLib>(u"Office", u"*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");
// إضافة مراجع إلى مشروع VBA
presentation->get_VbaProject()->get_References()->Add(stdoleReference);
presentation->get_VbaProject()->get_References()->Add(officeReference);
// حفظ العرض التقديمي
presentation->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptm);
إزالة ماكروز VBA
باستخدام خاصية VbaProject تحت فئة Presentation، يمكنك إزالة ماكرو VBA.
- إنشاء مثيل من فئة Presentation وتحميل العرض التقديمي الذي يحتوي على الماكرو.
- الوصول إلى وحدة الماكرو وإزالتها.
- حفظ العرض التقديمي المعدل.
يوضح هذا الكود C++ كيفية إزالة ماكرو VBA:
// مسار مجلد الوثائق.
const String outPath = u"../out/RemoveVBAMacros_out.pptm";
const String templatePath = u"../templates/vba.pptm";
// تحميل العرض التقديمي الذي يحتوي على الماكرو
SharedPtr<Presentation> presentation = MakeObject<Presentation>(templatePath);
// الوصول إلى وحدة VBA وإزالتها
presentation->get_VbaProject()->get_Modules()->Remove(presentation->get_VbaProject()->get_Modules()->idx_get(0));
// حفظ العرض التقديمي
presentation->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptm);
استخراج ماكروز VBA
- إنشاء مثيل من فئة Presentation وتحميل العرض التقديمي الذي يحتوي على الماكرو.
- تحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA.
- قم بالمرور عبر جميع الوحدات الموجودة في مشروع VBA لعرض الماكروز.
يوضح هذا الكود C++ كيفية استخراج ماكروز VBA من عرض تقديمي يحتوي على الماكروز:
// مسار مجلد الوثائق.
const String templatePath = u"../templates/VBA.pptm";
// تحميل العرض التقديمي الذي يحتوي على الماكرو
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
if (pres->get_VbaProject() != NULL) // تحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA
{
//for (SharedPtr<IVbaModule> module : pres->get_VbaProject()->get_Modules())
for (int i = 0; i < pres->get_VbaProject()->get_Modules()->get_Count(); i++)
{
SharedPtr<IVbaModule> module = pres->get_VbaProject()->get_Modules()->idx_get(i);
System::Console::WriteLine(module->get_Name());
System::Console::WriteLine(module->get_SourceCode());
}
}