العرض التقديمي عبر VBA
ملاحظة
عند تحويل عرض تقديمي يحتوي على ماكرو إلى تنسيق ملف مختلف (PDF، HTML، إلخ)، يتجاهل Aspose.Slides جميع الماكروهات (لا يتم نقل الماكروهات إلى الملف الناتج).
عند إضافة ماكرو إلى عرض تقديمي أو إعادة حفظ عرض تقديمي يحتوي على ماكرو، يقوم Aspose.Slides ببساطة بكتابة البايتات الخاصة بالماكرو.
Aspose.Slides لا يشغّل أبداً الماكروهات الموجودة في عرض تقديمي.
إضافة ماكرو VBA
يوفر Aspose.Slides الفئة VbaProject للسماح بإنشاء مشاريع VBA (والمراجع الخاصة بالمشروع) وتحرير الوحدات الموجودة. يمكنك استخدام الفئة VbaProject لإدارة VBA المدمج في عرض تقديمي.
- أنشئ نسخة من الفئة Presentation.
- استخدم مُنشئ VbaProject لإضافة مشروع VBA جديد.
- أضف وحدة إلى الـ VbaProject.
- عيّن شفرة المصدر للوحدة.
- أضف مراجع إلى
. - أضف مراجع إلى Microsoft Office.
- اربط المراجع بمشروع VBA.
- احفظ العرض التقديمي.
هذا المثال بلغة JavaScript يوضح كيفية إضافة ماكرو VBA من الصفر إلى عرض تقديمي:
// ينشئ نسخة من فئة العرض التقديمي
let pres = new aspose.slides.Presentation();
try {
// ينشئ مشروع VBA جديد
pres.setVbaProject(new aspose.slides.VbaProject());
// يضيف وحدة فارغة إلى مشروع VBA
let module = pres.getVbaProject().getModules().addEmptyModule("Module");
// يضبط شفرة المصدر للوحدة
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// ينشئ مرجعًا إلى <stdole>
let stdoleReference = new aspose.slides.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// ينشئ مرجعًا إلى Office
let officeReference = new aspose.slides.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", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
إزالة ماكرو VBA
باستخدام الخاصية VbaProject ضمن الفئة Presentation، يمكنك إزالة ماكرو VBA.
- أنشئ نسخة من الفئة Presentation وحمّل العرض التقديمي الذي يحتوي على الماكرو.
- الوصول إلى وحدة الماكرو وإزالتها.
- احفظ العرض التقديمي المعدل.
هذا المثال بلغة JavaScript يوضح كيفية إزالة ماكرو VBA:
// يحمل العرض التقديمي الذي يحتوي على الماكرو
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// يصل إلى وحدة Vba ويزيلها
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// يحفظ العرض التقديمي
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
استخراج ماكرو VBA
- أنشئ نسخة من الفئة Presentation وحمّل العرض التقديمي الذي يحتوي على الماكرو.
- تحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA.
- تكرار جميع الوحدات الموجودة في مشروع VBA لعرض الماكروهات.
هذا المثال بلغة JavaScript يوضح كيفية استخراج ماكرو VBA من عرض تقديمي يحتوي على ماكروهات:
// يحمل العرض التقديمي الذي يحتوي على الماكرو
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// يفحص ما إذا كان العرض التقديمي يحتوي على مشروع VBA
if (pres.getVbaProject() != null) {
for (let i = 0; i < pres.getVbaProject().getModules().size(); i++) {
let module = pres.getVbaProject().getModules().get_Item(i);
console.log(module.getName());
console.log(module.getSourceCode());
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
التحقق مما إذا كان مشروع VBA محميًا بكلمة مرور
باستخدام طريقة VbaProject.isPasswordProtected، يمكنك تحديد ما إذا كانت خصائص المشروع محمية بكلمة مرور.
- أنشئ نسخة من الفئة Presentation وحمّل عرضًا تقديميًا يحتوي على ماكرو.
- تحقق مما إذا كان العرض التقديمي يحتوي على VBA project.
- تحقق مما إذا كان مشروع VBA محميًا بكلمة مرور لعرض خصائصه.
let presentation = new aspose.slides.Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // تحقق مما إذا كان العرض التقديمي يحتوي على مشروع VBA.
if (presentation.getVbaProject().isPasswordProtected()) {
console.log("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.