إدارة مشاريع VBA في العروض التقديمية باستخدام Java

إضافة ماكرو VBA

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

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

هذا الكود Java يوضح لك كيفية إضافة ماكرو VBA من الصفر إلى عرض تقديمي:

// ينشئ مثيلًا من فئة العرض التقديمي
Presentation pres = new Presentation();
try {
    // ينشئ مشروع VBA جديد
    pres.setVbaProject(new VbaProject());
    
    // يضيف وحدة فارغة إلى مشروع VBA
    IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
    
    // يضبط شفرة المصدر للوحدة
    module.setSourceCode("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
    pres.getVbaProject().getReferences().add(stdoleReference);
    pres.getVbaProject().getReferences().add(officeReference);
   
    // يحفظ العرض التقديمي
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

إزالة ماكرو VBA

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

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

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

// يحمّل العرض التقديمي الذي يحتوي على الماكرو
Presentation pres = new Presentation("VBA.pptm");
try {
    // يصل إلى وحدة Vba ويزيلها
    pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
    
    // يحفظ العرض التقديمي
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

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

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

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

// يحمّل العرض التقديمي الذي يحتوي على الماكرو
Presentation pres = new Presentation("VBA.pptm");
try {
    if (pres.getVbaProject() != null) // يتحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA
    {
        for (IVbaModule module : pres.getVbaProject().getModules())
        {
            System.out.println(module.getName());
            System.out.println(module.getSourceCode());
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

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

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

  1. إنشاء مثيل من الفئة Presentation وتحميل عرض تقديمي يحتوي على ماكرو.
  2. التحقق مما إذا كان العرض التقديمي يحتوي على VBA project.
  3. التحقق مما إذا كان مشروع VBA محميًا بكلمة مرور لعرض خصائصه.
Presentation presentation = new Presentation("VBA.pptm");
try {
    if (presentation.getVbaProject() != null) { // تحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA.
        if (presentation.getVbaProject().isPasswordProtected()) {
            System.out.printf("The VBA Project '%s' is protected by password to view project properties.", 
                    presentation.getVbaProject().getName());
        }
    }
} finally {
    presentation.dispose();
}

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

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

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

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

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

هل الدعم متاح للتحكم في ActiveX المرتبط بشفرة VBA؟

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