عرض تقديمي عبر 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 من الصفر إلى عرض تقديمي:

    // إنشاء كائن من فئة العرض التقديمي
using (Presentation presentation = new Presentation())
{
    // إنشاء مشروع VBA جديد
    presentation.VbaProject = new VbaProject();

    // إضافة وحدة فارغة إلى مشروع VBA
    IVbaModule module = presentation.VbaProject.Modules.AddEmptyModule("Module");
  
    // تعيين شفرة المصدر للوحدة
    module.SourceCode = @"Sub Test(oShape As Shape) MsgBox ""Test"" End Sub";

    // إنشاء مرجع إلى <stdole>
    VbaReferenceOleTypeLib stdoleReference =
        new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");

    // إنشاء مرجع إلى Office
    VbaReferenceOleTypeLib officeReference =
        new VbaReferenceOleTypeLib("Office", "*\\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.VbaProject.References.Add(stdoleReference);
    presentation.VbaProject.References.Add(officeReference);

            
    // حفظ العرض التقديمي
    presentation.Save(dataDir + "AddVBAMacros_out.pptm", SaveFormat.Pptm);
}

إزالة ماكرو VBA

باستخدام الخاصية VbaProject ضمن فئة Presentation، يمكنك إزالة ماكرو VBA.

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

هذا الكود C# يوضح كيفية إزالة ماكرو VBA:

    // يقوم بتحميل العرض التقديمي الذي يحتوي على الماكرو
using (Presentation presentation = new Presentation(dataDir + "VBA.pptm"))
{
    // يقوم بالوصول إلى وحدة VBA وإزالتها
    presentation.VbaProject.Modules.Remove(presentation.VbaProject.Modules[0]);

    // يحفظ العرض التقديمي
    presentation.Save(dataDir + "RemovedVBAMacros_out.pptm", SaveFormat.Pptm);
}

استخراج ماكرو VBA

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

هذا الكود C# يوضح كيفية استخراج ماكرو VBA من عرض تقديمي يحتوي على ماكرو:

    // يحمل العرض التقديمي الذي يحتوي على الماكرو
using (Presentation pres = new Presentation("VBA.pptm"))
{
	if (pres.VbaProject != null) // يتحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA
	{
		foreach (IVbaModule module in pres.VbaProject.Modules)
		{
			Console.WriteLine(module.Name);
			Console.WriteLine(module.SourceCode);
		}
	}
}

التحقق مما إذا كان مشروع VBA محمياً بكلمة مرور

باستخدام الخاصية IVbaProject.IsPasswordProtected، يمكنك تحديد ما إذا كانت خصائص المشروع محمية بكلمة مرور.

  1. إنشاء مثيل من الفئة Presentation وتحميل عرض تقديمي يحتوي على ماكرو.
  2. التحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA.
  3. التحقق مما إذا كان مشروع VBA محمياً بكلمة مرور لعرض خصائصه.
using (Presentation presentation = new Presentation("VBA.pptm"))
{
    if (presentation.VbaProject != null) // تحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA.
    {
        if (presentation.VbaProject.IsPasswordProtected)
        {
            Console.WriteLine($"The VBA Project '{presentation.VbaProject.Name}' is protected by password to view project properties.");
        }
    }
}

الأسئلة الشائعة

ماذا يحدث للماكرو إذا حفظت العرض التقديمي كملف PPTX؟

سيتم إزالة الماكرو لأن تنسيق PPTX لا يدعم VBA. للحفاظ على الماكرو، اختر PPTM أو PPSM أو POTM.

هل يمكن لـ Aspose.Slides تشغيل الماكرو داخل العرض التقديمي، على سبيل المثال لتحديث البيانات؟

لا. المكتبة لا تنفّذ كود VBA أبداً؛ التنفيذ ممكن فقط داخل PowerPoint مع إعدادات الأمان المناسبة.

هل يتم دعم العمل مع عناصر التحكم ActiveX المرتبطة بكود VBA؟

نعم، يمكنك الوصول إلى عناصر التحكم ActiveX الحالية، تعديل خصائصها، وإزالتها. هذا مفيد عندما يتفاعل الماكرو مع عناصر التحكم ActiveX.