จัดการโปรเจกต์ VBA ในงานนำเสนอบน Android
คำนำ
Aspose.Slides ให้คลาสและอินเทอร์เฟซสำหรับการทำงานกับมาโครและโค้ด VBA
Note
เมื่อคุณแปลงงานนำเสนอที่มีมาโครเป็นรูปแบบไฟล์อื่น (PDF, HTML, ฯลฯ) Aspose.Slides จะละเว้นมาโครทั้งหมด (มาโครจะไม่ถูกรวมเข้าในไฟล์ผลลัพธ์)
เมื่อคุณเพิ่มมาโครลงในงานนำเสนอหรือบันทึกงานนำเสนอที่มีมาโครใหม่ Aspose.Slides จะเพียงแค่เขียนไบต์ของมาโครลงไป
Aspose.Slides ไม่เคย รันมาโครในงานนำเสนอ
เพิ่ม VBA Macros
Aspose.Slides มีคลาส VbaProject เพื่อให้คุณสร้างโปรเจกต์ VBA (และการอ้างอิงโปรเจกต์) และแก้ไขโมดูลที่มีอยู่ คุณสามารถใช้อินเทอร์เฟซ IVbaProject เพื่อจัดการ VBA ที่ฝังอยู่ในงานนำเสนอได้
- สร้างอินสแตนซ์ของคลาส Presentation
- ใช้คอนสตรัคเตอร์ VbaProject เพื่อเพิ่มโปรเจกต์ VBA ใหม่
- เพิ่มโมดูลลงใน VbaProject
- ตั้งค่าซอร์สโค้ดของโมดูล
- เพิ่มการอ้างอิงไปยัง
- เพิ่มการอ้างอิงไปยัง Microsoft Office
- ผสานการอ้างอิงเข้ากับโปรเจกต์ VBA
- บันทึกงานนำเสนอ
โค้ด Java ต่อไปนี้แสดงวิธีการเพิ่มมาโคร VBA ตั้งแต่ต้นลงในงานนำเสนอ:
// สร้างอินสแตนซ์ของคลาสงานนำเสนอ
Presentation pres = new Presentation();
try {
// สร้าง VBA Project ใหม่
pres.setVbaProject(new VbaProject());
// เพิ่มโมดูลเปล่าลงใน VBA project
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 project
pres.getVbaProject().getReferences().add(stdoleReference);
pres.getVbaProject().getReferences().add(officeReference);
// บันทึกงานนำเสนอ
pres.save("test.pptm", SaveFormat.Pptm);
} finally {
if (pres != null) pres.dispose();
}
ลบ VBA Macros
โดยใช้คุณสมบัติ 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 Macros
- สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีมาโคร
- ตรวจสอบว่ามี VBA Project อยู่หรือไม่
- วนลูปผ่านโมดูลทั้งหมดใน VBA Project เพื่อดูมาโคร
โค้ด Java ต่อไปนี้แสดงวิธีการดึง VBA macros จากงานนำเสนอที่มีมาโคร:
// โหลดงานนำเสนอที่มีมาโคร
Presentation pres = new Presentation("VBA.pptm");
try {
if (pres.getVbaProject() != null) // ตรวจสอบว่างานนำเสนอมี VBA Project หรือไม่
{
for (IVbaModule module : pres.getVbaProject().getModules())
{
System.out.println(module.getName());
System.out.println(module.getSourceCode());
}
}
} finally {
if (pres != null) pres.dispose();
}
ตรวจสอบว่า VBA Project มีการป้องกันด้วยรหัสผ่านหรือไม่
โดยใช้เมธอด IVbaProject.isPasswordProtected คุณสามารถตรวจสอบได้ว่าโปรเจกต์ถูกป้องกันด้วยรหัสผ่านหรือไม่
- สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีมาโคร
- ตรวจสอบว่ามี VBA project อยู่หรือไม่
- ตรวจสอบว่า VBA project ถูกป้องกันด้วยรหัสผ่านหรือไม่เพื่อดูคุณสมบัติของมัน
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; การทำงานของ VBA เป็นไปได้เฉพาะใน PowerPoint โดยมีการตั้งค่าความปลอดภัยที่เหมาะสมเท่านั้น
การทำงานกับ ActiveX control ที่เชื่อมโยงกับโค้ด VBA ได้รับการสนับสนุนหรือไม่?
ได้ คุณสามารถเข้าถึง ActiveX controls ที่มีอยู่แล้ว, ปรับเปลี่ยนคุณสมบัติและลบออกได้ ซึ่งเป็นประโยชน์เมื่อมาโครโต้ตอบกับ ActiveX