จัดการโครงการ VBA ในงานนำเสนอโดยใช้ JavaScript

บทนำ

Aspose.Slides มีคลาสสำหรับทำงานกับแมโครและโค้ด VBA.

เพิ่ม VBA แมโคร

Aspose.Slides มีคลาส VbaProject เพื่อให้คุณสร้างโครงการ VBA (และการอ้างอิงโครงการ) และแก้ไขโมดูลที่มีอยู่ คุณสามารถใช้คลาส VbaProject เพื่อจัดการ VBA ที่ฝังอยู่ในงานนำเสนอ

  1. สร้างอินสแตนซ์ของคลาส Presentation
  2. ใช้ตัวสร้างของ VbaProject เพื่อเพิ่มโครงการ VBA ใหม่
  3. เพิ่มโมดูลลงใน VbaProject
  4. ตั้งค่าซอร์สโค้ดของโมดูล
  5. เพิ่มการอ้างอิงไปยัง
  6. เพิ่มการอ้างอิงไปยัง Microsoft Office
  7. เชื่อมโยงการอ้างอิงกับโครงการ VBA
  8. บันทึกงานนำเสนอ

โค้ด 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 ได้

  1. สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีแมโคร
  2. เข้าถึงโมดูล Macro และลบออก
  3. บันทึกงานนำเสนอที่แก้ไขแล้ว

โค้ด 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 แมโคร

  1. สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีแมโคร
  2. ตรวจสอบว่างานนำเสนอมีโครงการ VBA หรือไม่
  3. วนลูปผ่านโมดูลทั้งหมดในโครงการ 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 คุณสามารถกำหนดได้ว่าโครงการนั้นมีการป้องกันด้วยรหัสผ่านหรือไม่

  1. สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีแมโคร
  2. ตรวจสอบว่างานนำเสนอมี VBA project หรือไม่
  3. ตรวจสอบว่าโครงการ 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();
}

FAQ

อะไรจะเกิดขึ้นกับแมโครหากฉันบันทึกงานนำเสนอเป็น PPTX?

แมโครจะถูกลบเนื่องจาก PPTX ไม่รองรับ VBA. หากต้องการเก็บแมโคร ให้เลือก PPTM, PPSM หรือ POTM

Aspose.Slides สามารถรันแมโครภายในงานนำเสนอเพื่อเช่น การรีเฟรชข้อมูลได้หรือไม่?

ไม่ได้. ไลบรารีจะไม่ทำการรันโค้ด VBA; การรันจะทำได้เฉพาะใน PowerPoint ที่ตั้งค่าความปลอดภัยที่เหมาะสม

การทำงานกับคอนโทรล ActiveX ที่เชื่อมโยงกับโค้ด VBA ได้รับการสนับสนุนหรือไม่?

ใช่, คุณสามารถเข้าถึง ActiveX controls ที่มีอยู่, แก้ไขคุณสมบัติของมัน, และลบออกได้. สิ่งนี้เป็นประโยชน์เมื่อแมโครทำงานกับ ActiveX