.NET में प्रस्तुतियों में VBA प्रोजेक्ट प्रबंधित करें

परिचय

Aspose.Slides.Vba नेमस्पेस में मैक्रो और VBA कोड के साथ काम करने के लिए क्लास और इंटरफ़ेस शामिल हैं।

VBA मैक्रो जोड़ें

Aspose.Slides VbaProject क्लास प्रदान करता है जिससे आप VBA प्रोजेक्ट (और प्रोजेक्ट रेफ़रेंसेस) बना सकते हैं और मौजूदा मॉड्यूल को संपादित कर सकते हैं। आप प्रस्तुति में एम्बेडेड VBA को प्रबंधित करने के लिए IVbaProject इंटरफ़ेस का उपयोग कर सकते हैं।

  1. एक Presentation क्लास का इंस्टैंस बनाएं।
  2. नया VBA प्रोजेक्ट जोड़ने के लिए VbaProject कंस्ट्रक्टर का उपयोग करें।
  3. VbaProject में एक मॉड्यूल जोड़ें।
  4. मॉड्यूल का स्रोत कोड सेट करें।
  5. के रेफ़रेंस जोड़ें।
  6. Microsoft Office के रेफ़रेंस जोड़ें।
  7. रेफ़रेंस को VBA प्रोजेक्ट से जोड़ें।
  8. प्रस्तुति सहेजें।

यह C# कोड आपको दिखाता है कि कैसे एक नई VBA मैक्रो को शून्य से प्रस्तुति में जोड़ा जाता है:

    // प्रेज़ेंटेशन क्लास का एक इंस्टैंस बनाता है
using (Presentation presentation = new Presentation())
{
    // नया VBA प्रोजेक्ट बनाता है
    presentation.VbaProject = new VbaProject();

    // VBA प्रोजेक्ट में एक खाली मॉड्यूल जोड़ता है
    IVbaModule module = presentation.VbaProject.Modules.AddEmptyModule("Module");
  
    // मॉड्यूल का स्रोत कोड सेट करता है
    module.SourceCode = @"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 प्रोजेक्ट में रेफ़रेंसेस जोड़ता है
    presentation.VbaProject.References.Add(stdoleReference);
    presentation.VbaProject.References.Add(officeReference);

            
    // प्रेज़ेंटेशन सहेजता है
    presentation.Save(dataDir + "AddVBAMacros_out.pptm", SaveFormat.Pptm);
}

VBA मैक्रो हटाएँ

Presentation क्लास के अंतर्गत VbaProject प्रॉपर्टी का उपयोग करके आप VBA मैक्रो हटा सकते हैं।

  1. एक Presentation क्लास का इंस्टैंस बनाएं और मैक्रो वाली प्रस्तुति लोड करें।
  2. Macro मॉड्यूल तक पहुंचें और उसे हटाएं।
  3. परिवर्तित प्रस्तुति सहेजें।

यह C# कोड आपको दिखाता है कि कैसे एक VBA मैक्रो हटाई जाती है:

    // मैक्रो वाले प्रस्तुति को लोड करता है
using (Presentation presentation = new Presentation(dataDir + "VBA.pptm"))
{
    // Vba मॉड्यूल तक पहुंचता है और उसे हटाता है
    presentation.VbaProject.Modules.Remove(presentation.VbaProject.Modules[0]);

    // प्रस्तुति सहेजता है
    presentation.Save(dataDir + "RemovedVBAMacros_out.pptm", SaveFormat.Pptm);
}

VBA मैक्रो निकालें

  1. एक Presentation क्लास का इंस्टैंस बनाएं और मैक्रो वाली प्रस्तुति लोड करें।
  2. जाँचें कि प्रस्तुति में VBA प्रोजेक्ट है या नहीं।
  3. VBA प्रोजेक्ट में मौजूद सभी मॉड्यूल्स को लूप करके मैक्रो देखें।

यह C# कोड आपको दिखाता है कि कैसे मैक्रो वाले प्रस्तुति से VBA मैक्रो निकाली जाती हैं:

    // मैक्रो वाले प्रस्तुति को लोड करता है
using (Presentation pres = new Presentation("VBA.pptm"))
{
	if (pres.VbaProject != null) // जाँचता है कि प्रस्तुति में VBA प्रोजेक्ट है या नहीं
	{
		foreach (IVbaModule module in pres.VbaProject.Modules)
		{
			Console.WriteLine(module.Name);
			Console.WriteLine(module.SourceCode);
		}
	}
}

जाँचें कि VBA प्रोजेक्ट पासवर्ड‑प्रोटेक्टेड है या नहीं

IVbaProject.IsPasswordProtected प्रॉपर्टी का उपयोग करके आप निर्धारित कर सकते हैं कि प्रोजेक्ट की प्रॉपर्टी पासवर्ड‑प्रोटेक्टेड है या नहीं।

  1. एक Presentation क्लास का इंस्टैंस बनाएं और मैक्रो वाली प्रस्तुति लोड करें।
  2. जाँचें कि प्रस्तुति में VBA project है या नहीं।
  3. जाँचें कि VBA प्रोजेक्ट पासवर्ड‑प्रोटेक्टेड है या नहीं, ताकि उसकी प्रॉपर्टी देखी जा सके।
using (Presentation presentation = new Presentation("VBA.pptm"))
{
    if (presentation.VbaProject != null) // जाँचें कि प्रस्तुति में VBA प्रोजेक्ट है या नहीं।
    {
        if (presentation.VbaProject.IsPasswordProtected)
        {
            Console.WriteLine($"The VBA Project '{presentation.VbaProject.Name}' is protected by password to view project properties.");
        }
    }
}

FAQ

यदि मैं प्रस्तुति को PPTX के रूप में सहेजूँ तो मैक्रो का क्या होता है?

मैक्रो हटा दिए जाते हैं क्योंकि PPTX VBA को सपोर्ट नहीं करता। मैक्रो को रखने के लिए PPTM, PPSM या POTM चुनें।

क्या Aspose.Slides प्रस्तुति में मैक्रो चला सकता है, उदाहरण के लिए डेटा रीफ़्रेश करने के लिए?

नहीं। लाइब्रेरी कभी भी VBA कोड नहीं चलाती; निष्पादन केवल PowerPoint में उचित सुरक्षा सेटिंग्स के साथ ही संभव है।

क्या VBA कोड से जुड़े ActiveX कंट्रोल्स के साथ काम करना समर्थित है?

हाँ, आप मौजूदा ActiveX controls तक पहुंच सकते हैं, उनकी प्रॉपर्टी बदल सकते हैं, और उन्हें हटा सकते हैं। यह तब उपयोगी है जब मैक्रो ActiveX के साथ इंटरैक्ट करते हैं।