مدیریت پروژههای VBA در ارائهها بر روی اندروید
مقدمه
Aspose.Slides کلاسها و اینترفیسهایی برای کار با ماکروها و کد VBA فراهم میکند.
Note
هنگامی که یک ارائه حاوی ماکروها را به قالب فایل دیگری (PDF، HTML و غیره) تبدیل میکنید، Aspose.Slides تمام ماکروها را نادیده میگیرد (ماکروها به فایل خروجی منتقل نمیشوند).
هنگامی که ماکروها را به یک ارائه اضافه میکنید یا یک ارائه حاوی ماکروها را دوباره ذخیره میکنید، Aspose.Slides به سادگی بایتهای ماکروها را مینویسد.
Aspose.Slides هرگز ماکروهای موجود در یک ارائه را اجرا نمیکند.
افزودن ماکروهای VBA
Aspose.Slides کلاس VbaProject را فراهم میکند تا بتوانید پروژههای VBA (و ارجاعات پروژه) ایجاد کنید و ماژولهای موجود را ویرایش کنید. میتوانید از اینترفیس IVbaProject برای مدیریت VBA جاسازی شده در یک ارائه استفاده کنید.
- یک نمونه از کلاس Presentation ایجاد کنید.
- از سازندهٔ VbaProject برای افزودن یک پروژه VBA جدید استفاده کنید.
- یک ماژول به VbaProject اضافه کنید.
- کد منبع ماژول را تنظیم کنید.
- ارجاعات به
را اضافه کنید. - ارجاعات به Microsoft Office را اضافه کنید.
- ارجاعات را به پروژه VBA مرتبط کنید.
- ارائه را ذخیره کنید.
این کد 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 را حذف کنید.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائه حاوی ماکرو را بارگذاری کنید.
- به ماژول Macro دسترسی پیدا کرده و آن را حذف کنید.
- ارائهٔ تغییر یافته را ذخیره کنید.
این کد 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
- یک نمونه از کلاس Presentation ایجاد کنید و ارائه حاوی ماکرو را بارگذاری کنید.
- بررسی کنید آیا ارائه حاوی یک پروژه VBA است یا خیر.
- از طریق تمام ماژولهای موجود در پروژه 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 میتوانید تعیین کنید آیا خصوصیات یک پروژه با رمز عبور محافظت شدهاند یا خیر.
- یک نمونه از کلاس Presentation ایجاد کنید و ارائهای که حاوی ماکرو است را بارگذاری کنید.
- بررسی کنید آیا ارائه حاوی یک پروژه VBA است یا خیر.
- بررسی کنید آیا پروژه 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 ارتباط دارند.