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.

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.

  1. Vytvořte instanci třídy Presentation.
  2. Použijte konstruktor třídy VbaProject k přidání nového projektu VBA.
  3. Přidejte modul do VbaProject.
  4. Nastavte zdrojový kód modulu.
  5. Přidejte odkazy na .
  6. Přidejte odkazy na Microsoft Office.
  7. Přiřaďte odkazy k projektu VBA.
  8. 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.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
  2. Získejte přístup k modulu makra a odeberte jej.
  3. 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

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
  2. Zkontrolujte, zda prezentace obsahuje projekt VBA.
  3. 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.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci, která obsahuje makro.
  2. Zkontrolujte, zda prezentace obsahuje VBA projekt.
  3. 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.