Správa projektů VBA v prezentacích pomocí PHP
Úvod
API Aspose.Slides obsahuje třídy pro práci s makry a kódem VBA.
Note
Když převedete prezentaci obsahující makra do jiného formátu souboru (PDF, HTML atd.), Aspose.Slides ignoruje všechna makra (makra nejsou přenesena do výsledného souboru).
Když přidáte makra do prezentace nebo znovu uložíte prezentaci obsahující makra, Aspose.Slides jednoduše zapíše bajty makr.
Aspose.Slides nikdy nespouští makra v prezentaci.
Přidání VBA maker
Aspose.Slides poskytuje třídu VbaProject, která vám umožní vytvářet projekty VBA (a odkazy na projekty) a upravovat existující moduly. Třídu VbaProject můžete použít ke správě VBA vloženého v prezentaci.
- Vytvořte instanci třídy Presentation.
- Použijte konstruktor třídy VbaProject k přidání nového projektu VBA.
- Přidejte modul do VbaProject.
- Nastavte zdrojový kód modulu.
- Přidejte odkazy na
. - Přidejte odkazy na Microsoft Office.
- Přiřaďte odkazy k projektu VBA.
- Uložte prezentaci.
Tento PHP kód vám ukazuje, jak od nuly přidat VBA makro do prezentace:
# Vytvoří instanci třídy prezentace
$pres = new Presentation();
try {
# Vytvoří nový projekt VBA
$pres->setVbaProject(new VbaProject());
# Přidá prázdný modul do projektu VBA
$module = $pres->getVbaProject()->getModules()->addEmptyModule("Module");
# Nastaví zdrojový kód modulu
$module->setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
# Vytvoří odkaz na <stdole>
$stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
# Vytvoří odkaz na 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");
# Přidá odkazy do projektu VBA
$pres->getVbaProject()->getReferences()->add($stdoleReference);
$pres->getVbaProject()->getReferences()->add($officeReference);
# Uloží prezentaci
$pres->save("test.pptm", SaveFormat::Pptm);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Odstranění VBA maker
Pomocí vlastnosti VbaProject v třídě Presentation můžete makro VBA odstranit.
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
- Získejte přístup k modulu makra a odeberte jej.
- Uložte upravenou prezentaci.
Tento PHP kód vám ukazuje, jak odstranit VBA makro:
# Načte prezentaci obsahující makro
$pres = new Presentation("VBA.pptm");
try {
# Získá přístup k Vba modulu a odebere jej
$pres->getVbaProject()->getModules()->remove($pres->getVbaProject()->getModules()->get_Item(0));
# Uloží prezentaci
$pres->save("test.pptm", SaveFormat::Pptm);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Extrahování VBA maker
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
- Zkontrolujte, zda prezentace obsahuje projekt VBA.
- Projděte všechny moduly obsažené v projektu VBA a zobrazte makra.
Tento PHP kód vám ukazuje, jak extrahovat VBA makra z prezentace obsahující makra:
# Načte prezentaci obsahující makro
$pres = new Presentation("VBA.pptm");
try {
# Kontroluje, zda prezentace obsahuje projekt 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();
}
}
Kontrola, zda je projekt VBA chráněn heslem
Použitím metody VbaProject::isPasswordProtected můžete zjistit, zda jsou vlastnosti projektu chráněny heslem.
- Vytvořte instanci třídy Presentation a načtěte prezentaci, která obsahuje makro.
- Zkontrolujte, zda prezentace obsahuje VBA projekt.
- Zkontrolujte, zda je projekt VBA chráněn heslem, abyste mohli zobrazit jeho vlastnosti.
$presentation = new Presentation("VBA.pptm");
try {
if ($presentation->getVbaProject() != null) { // Zkontroluje, zda prezentace obsahuje projekt VBA.
if ($presentation->getVbaProject()->isPasswordProtected()) {
printf("The VBA Project '%s' is protected by password to view project properties.",
$presentation->getVbaProject()->getName());
}
}
} finally {
$presentation->dispose();
}
Často kladené dotazy
Co se stane s makry, pokud uložíte prezentaci jako PPTX?
Makra budou odstraněna, protože PPTX nepodporuje VBA. Chcete‑li zachovat makra, zvolte PPTM, PPSM nebo POTM.
Může Aspose.Slides spouštět makra v prezentaci, například pro obnovení dat?
Ne. Knihovna nikdy nevykonává kód VBA; jeho spuštění je možné pouze v PowerPointu s odpovídajícím nastavením zabezpečení.
Je podpora práce s ovládacími prvky ActiveX propojenými s kódem VBA?
Ano, můžete přistupovat k existujícím ActiveX controls, měnit jejich vlastnosti a odstraňovat je. To je užitečné, když makra komunikují s ActiveX.