PHP का उपयोग करके प्रस्तुतियों में VBA प्रोजेक्ट्स प्रबंधित करें
परिचय
Aspose.Slides API में मैक्रोज़ और VBA कोड के साथ काम करने के लिए क्लासेस शामिल हैं।
Note
जब आप मैक्रो वाले प्रेजेंटेशन को किसी अलग फ़ाइल फ़ॉर्मेट (PDF, HTML, आदि) में परिवर्तित करते हैं, तो Aspose.Slides सभी मैक्रो को नज़रअंदाज़ करता है (मैक्रो परिणामस्वरूप फ़ाइल में नहीं जाते)।
जब आप प्रेजेंटेशन में मैक्रो जोड़ते हैं या मैक्रो वाले प्रेजेंटेशन को फिर से सेव करते हैं, तो Aspose.Slides केवल मैक्रो के बाइट्स को लिखता है।
Aspose.Slides कभी नहीं प्रेजेंटेशन में मैक्रो चलाता है।
VBA मैक्रोज़ जोड़ें
Aspose.Slides VbaProject क्लास प्रदान करता है जिससे आप VBA प्रोजेक्ट्स (और प्रोजेक्ट रेफ़रेंसेज़) बना सकते हैं और मौजूदा मॉड्यूल संपादित कर सकते हैं। आप VbaProject क्लास का उपयोग करके प्रेजेंटेशन में एम्बेडेड VBA को प्रबंधित कर सकते हैं।
- एक Presentation क्लास की इंस्टेंस बनाएँ।
- एक नया VBA प्रोजेक्ट जोड़ने के लिए VbaProject कंस्ट्रक्टर का उपयोग करें।
- VbaProject में एक मॉड्यूल जोड़ें।
- मॉड्यूल का सोर्स कोड सेट करें।
के रेफ़रेंसेज़ जोड़ें। - Microsoft Office के रेफ़रेंसेज़ जोड़ें।
- रेफ़रेंसेज़ को VBA प्रोजेक्ट के साथ एसोसिएट करें।
- प्रेजेंटेशन को सेव करें।
यह PHP कोड दिखाता है कि कैसे शून्य से प्रेजेंटेशन में VBA मैक्रो जोड़ा जाए:
# प्रस्तुति क्लास का एक इंस्टेंस बनाता है
$pres = new Presentation();
try {
# एक नया VBA प्रोजेक्ट बनाता है
$pres->setVbaProject(new VbaProject());
# VBA प्रोजेक्ट में एक खाली मॉड्यूल जोड़ता है
$module = $pres->getVbaProject()->getModules()->addEmptyModule("Module");
# मॉड्यूल का स्रोत कोड सेट करता है
$module->setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
# <stdole> के लिए एक रेफ़रेंस बनाता है
$stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
# Office के लिए एक रेफ़रेंस बनाता है
$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 (!java_is_null($pres)) {
$pres->dispose();
}
}
VBA मैक्रोज़ हटाएँ
आप Presentation क्लास के अंतर्गत VbaProject प्रॉपर्टी का उपयोग करके 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 (!java_is_null($pres)) {
$pres->dispose();
}
}
VBA मैक्रोज़ निकालें
- एक Presentation क्लास की इंस्टेंस बनाएँ और मैक्रो वाले प्रेजेंटेशन को लोड करें।
- जाँचें कि प्रेजेंटेशन में VBA प्रोजेक्ट है या नहीं।
- VBA प्रोजेक्ट में शामिल सभी मॉड्यूल को लूप करके मैक्रो देखें।
# मैक्रो वाले प्रस्तुति को लोड करता है
$pres = new Presentation("VBA.pptm");
try {
# जाँचता है कि प्रस्तुति में VBA प्रोजेक्ट है या नहीं
if (!java_is_null($pres->getVbaProject())) {
foreach($pres->getVbaProject()->getModules() as $module) {
echo($module->getName());
echo($module->getSourceCode());
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
जाँचें कि VBA प्रोजेक्ट पासवर्ड-प्रोटेक्टेड है या नहीं
आप VbaProject::isPasswordProtected मेथड का उपयोग करके यह निर्धारित कर सकते हैं कि प्रोजेक्ट की प्रॉपर्टीज़ पासवर्ड-प्रोटेक्टेड हैं या नहीं।
- एक Presentation क्लास की इंस्टेंस बनाएँ और मैक्रो वाला प्रेजेंटेशन लोड करें।
- जाँचें कि प्रेजेंटेशन में एक VBA project है या नहीं।
- प्रॉपर्टीज़ देखने के लिए यह जांचें कि VBA प्रोजेक्ट पासवर्ड-प्रोटेक्टेड है या नहीं।
$presentation = new Presentation("VBA.pptm");
try {
if ($presentation->getVbaProject() != null) { // जाँचें कि प्रस्तुति में VBA प्रोजेक्ट मौजूद है या नहीं।
if ($presentation->getVbaProject()->isPasswordProtected()) {
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 के भीतर उपयुक्त सुरक्षा सेटिंग्स के साथ संभव है।
क्या VBA कोड से जुड़े ActiveX नियंत्रणों के साथ काम करना समर्थित है?
हाँ, आप मौजूदा ActiveX controls तक पहुँच सकते हैं, उनके प्रॉपर्टीज़ को संशोधित कर सकते हैं, और उन्हें हटा सकते हैं। यह तब उपयोगी है जब मैक्रो ActiveX के साथ इंटरेक्ट करते हैं।