مدیریت پروژههای VBA در ارائهها با استفاده از Java
مقدمه
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 ایجاد میکند
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 دسترسی پیدا کنید و آن را حذف کنید.
- ارائهٔ اصلاحشده را ذخیره کنید.
// ارائه حاوی ماکرو را بارگذاری میکند
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 حلقه بزنید تا ماکروها را مشاهده کنید.
// ارائه حاوی ماکرو را بارگذاری میکند
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();
}
FAQ
اگر ارائه را به صورت PPTX ذخیره کنم چه اتفاقی برای ماکروها میافتد؟
ماکروها حذف میشوند زیرا فرمت PPTX از VBA پشتیبانی نمیکند. برای نگه داشتن ماکروها، PPTM، PPSM یا POTM را انتخاب کنید.
آیا Aspose.Slides میتواند ماکروها را داخل یک ارائه اجرا کند، برای مثال برای بهروزرسانی دادهها؟
خیر. این کتابخانه هرگز کد VBA را اجرا نمیکند؛ اجرا فقط در داخل PowerPoint و با تنظیمات امنیتی مناسب امکانپذیر است.
آیا کار با کنترلهای ActiveX مرتبط با کد VBA پشتیبانی میشود؟
بله، میتوانید به کنترلهای ActiveX موجود دسترسی پیدا کنید، ویژگیهای آنها را تغییر دهید و حذف کنید. این امر زمانی مفید است که ماکروها با ActiveX تعامل داشته باشند.