العرض عبر VBA

تحتوي مساحة أسماء Aspose.Slides.Vba على فئات وواجهات للعمل مع الماكروز وكود VBA.

إضافة ماكروز VBA

توفر Aspose.Slides فئة VbaProject للسماح لك بإنشاء مشاريع VBA (ومراجع المشروع) وتحرير الوحدات الموجودة. يمكنك استخدام واجهة IVbaProject لإدارة VBA المدمجة في عرض تقديمي.

  1. إنشاء مثيل من فئة Presentation.
  2. استخدام مُنشئ VbaProject لإضافة مشروع VBA جديد.
  3. إضافة وحدة إلى VbaProject.
  4. تعيين كود المصدر للوحدة.
  5. إضافة مراجع إلى .
  6. إضافة مراجع إلى Microsoft Office.
  7. ربط المراجع بمشروع VBA.
  8. حفظ العرض التقديمي.

يوضح هذا الكود 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.

  1. إنشاء مثيل من فئة Presentation وتحميل العرض التقديمي الذي يحتوي على الماكرو.
  2. الوصول إلى وحدة الماكرو وإزالتها.
  3. حفظ العرض التقديمي المعدل.

يوضح هذا الكود 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

  1. إنشاء مثيل من فئة Presentation وتحميل العرض التقديمي الذي يحتوي على الماكرو.
  2. تحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA.
  3. قم بالمرور عبر جميع الوحدات الموجودة في مشروع 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());
		}
	}