VBA projektek kezelése prezentációkban .NET-ben
Bevezetés
A Aspose.Slides.Vba névtér osztályokat és interfészeket tartalmaz a makrókkal és a VBA kóddal való munkához.
Note
Amikor egy makrókat tartalmazó prezentációt más fájlformátumba (PDF, HTML, stb.) konvertál, az Aspose.Slides figyelmen kívül hagyja az összes makrót (a makrók nem kerülnek át a létrehozott fájlba).
Amikor makrókat ad hozzá egy prezentációhoz vagy újra ment egy makrókat tartalmazó prezentációt, az Aspose.Slides egyszerűen a makrók bájtjait írja ki.
Az Aspose.Slides soha nem futtatja a prezentáció makróit.
VBA-makrók hozzáadása
Az Aspose.Slides biztosítja a VbaProject osztályt, amely lehetővé teszi VBA projektek (és projekt hivatkozások) létrehozását és meglévő modulok szerkesztését. A IVbaProject interfész segítségével kezelheti a prezentációba ágyazott VBA-t.
- Hozzon létre egy példányt a Presentation osztályból.
- Használja a VbaProject konstruktort egy új VBA projekt hozzáadásához.
- Adjon hozzá egy modult a VbaProjecthez.
- Állítsa be a modul forráskódját.
- Adjon hozzá hivatkozásokat a
-re. - Adjon hozzá hivatkozásokat a Microsoft Office-ra.
- Kapcsolja össze a hivatkozásokat a VBA projekttel.
- Mentse a prezentációt.
Ez a C# kód megmutatja, hogyan lehet egy VBA makrót teljesen újonnan hozzáadni egy prezentációhoz:
// Létrehoz egy példányt a Presentation osztályból
using (Presentation presentation = new Presentation())
{
// Létrehoz egy új VBA projektet
presentation.VbaProject = new VbaProject();
// Üres modult ad hozzá a VBA projekthez
IVbaModule module = presentation.VbaProject.Modules.AddEmptyModule("Module");
// Beállítja a modul forráskódját
module.SourceCode = @"Sub Test(oShape As Shape) MsgBox ""Test"" End Sub";
// Létrehoz egy hivatkozást a <stdole>-ra
VbaReferenceOleTypeLib stdoleReference =
new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Létrehoz egy hivatkozást az Office-ra
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");
// Hivatkozásokat ad hozzá a VBA projekthez
presentation.VbaProject.References.Add(stdoleReference);
presentation.VbaProject.References.Add(officeReference);
// Mentse a prezentációt
presentation.Save(dataDir + "AddVBAMacros_out.pptm", SaveFormat.Pptm);
}
VBA-makrók eltávolítása
A VbaProject tulajdonságot a Presentation osztály alatt használva eltávolíthat egy VBA makrót.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a makrót tartalmazó prezentációt.
- Hozzáférés a Makró modulhoz, és távolítsa el azt.
- Mentse a módosított prezentációt.
Ez a C# kód megmutatja, hogyan lehet egy VBA makrót eltávolítani:
// Betölti a makrót tartalmazó prezentációt
using (Presentation presentation = new Presentation(dataDir + "VBA.pptm"))
{
// Eléri a Vba modult és eltávolítja
presentation.VbaProject.Modules.Remove(presentation.VbaProject.Modules[0]);
// Mentse a prezentációt
presentation.Save(dataDir + "RemovedVBAMacros_out.pptm", SaveFormat.Pptm);
}
VBA-makrók kinyerése
- Hozzon létre egy Presentation példányt, és töltse be a makrót tartalmazó prezentációt.
- Ellenőrizze, hogy a prezentáció tartalmaz‑e VBA Projectet.
- Járja be a VBA Projectben található összes modult a makrók megtekintéséhez.
Ez a C# kód megmutatja, hogyan lehet VBA makrókat kinyerni egy makrókat tartalmazó prezentációból:
// Betölti a makrót tartalmazó prezentációt
using (Presentation pres = new Presentation("VBA.pptm"))
{
if (pres.VbaProject != null) // Ellenőrzi, hogy a prezentáció tartalmaz-e VBA projektet
{
foreach (IVbaModule module in pres.VbaProject.Modules)
{
Console.WriteLine(module.Name);
Console.WriteLine(module.SourceCode);
}
}
}
Ellenőrizze, hogy a VBA projekt jelszóval védett‑e
Az IVbaProject.IsPasswordProtected tulajdonság segítségével megállapítható, hogy egy projekt tulajdonságai jelszóval védettek‑e.
- Hozzon létre egy Presentation példányt, és töltse be a makrót tartalmazó prezentációt.
- Ellenőrizze, hogy a prezentáció tartalmaz‑e VBA projectet.
- Ellenőrizze, hogy a VBA projekt jelszóval védett‑e a tulajdonságok megtekintéséhez.
using (Presentation presentation = new Presentation("VBA.pptm"))
{
if (presentation.VbaProject != null) // Ellenőrzi, hogy a prezentáció tartalmaz-e VBA projektet.
{
if (presentation.VbaProject.IsPasswordProtected)
{
Console.WriteLine($"The VBA Project '{presentation.VbaProject.Name}' is protected by password to view project properties.");
}
}
}
GYIK
Mi történik a makrókkal, ha a bemutatót PPTX formátumban mentem?
A makrók eltávolításra kerülnek, mert a PPTX nem támogatja a VBA‑t. A makrók megtartásához válassza a PPTM, PPSM vagy POTM formátumot.
Futtathatja‑e az Aspose.Slides a makrókat a bemutatóban, például az adatok frissítéséhez?
Nem. A könyvtár soha nem hajtja végre a VBA kódot; a végrehajtás csak a PowerPointban lehetséges a megfelelő biztonsági beállításokkal.
Támogatott‑e az ActiveX vezérlőkkel való munka, amelyek VBA kódra hivatkoznak?
Igen, hozzáférhet a meglévő ActiveX controls vezérlőkhöz, módosíthatja azok tulajdonságait, és eltávolíthatja őket. Ez hasznos, ha a makrók az ActiveX‑szel interakcióba lépnek.