Android पर प्रस्तुतियों में VBA प्रोजेक्ट प्रबंधन
Introduction
Aspose.Slides मैक्रो और VBA कोड के साथ काम करने के लिए क्लास और इंटरफ़ेस प्रदान करता है।
Note
जब आप मैक्रो वाले प्रस्तुतीकरण को किसी अलग फ़ाइल फ़ॉर्मेट (PDF, HTML, आदि) में परिवर्तित करते हैं, तो Aspose.Slides सभी मैक्रो को अनदेखा करता है (मैक्रो परिणामस्वरूप फ़ाइल में नहीं रखे जाते)।
जब आप प्रस्तुतीकरण में मैक्रो जोड़ते हैं या मैक्रो वाले प्रस्तुतीकरण को फिर से सहेजते हैं, तो Aspose.Slides केवल मैक्रो के बाइट्स को लिखता है।
Aspose.Slides कभी नहीं प्रस्तुतीकरण में मैक्रो चलाता है।
Add VBA Macros
Aspose.Slides आपको VBA प्रोजेक्ट (और प्रोजेक्ट रेफ़रेंसेज़) बनाने और मौजूदा मॉड्यूल संपादित करने के लिए VbaProject क्लास प्रदान करता है। आप प्रस्तुतीकरण में एम्बेडेड VBA को प्रबंधित करने के लिए IVbaProject इंटरफ़ेस का उपयोग कर सकते हैं।
- 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();
}
Remove VBA Macros
Presentation क्लास के अंतर्गत VbaProject प्रॉपर्टी का उपयोग करके आप 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();
}
Extract VBA Macros
- 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();
}
Check Whether a VBA Project Is Password-Protected
IVbaProject.isPasswordProtected मेथड का उपयोग करके आप निर्धारित कर सकते हैं कि प्रोजेक्ट की प्रॉपर्टीज़ पासवर्ड-प्रोटेक्टेड हैं या नहीं।
- Presentation क्लास का एक इंस्टेंस बनाएं और मैक्रो वाला प्रस्तुतीकरण लोड करें।
- जाँचें कि प्रस्तुतीकरण में VBA project है या नहीं।
- 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 के अंदर संभव है।
क्या VBA कोड से जुड़ी ActiveX कंट्रोल्स के साथ काम करना समर्थित है?
हाँ, आप मौजूदा ActiveX controls तक पहुँचा सकते हैं, उनकी प्रॉपर्टीज़ संशोधित कर सकते हैं, और उन्हें हटा सकते हैं। यह तब उपयोगी है जब मैक्रो ActiveX के साथ इंटरैक्ट करते हैं।