VBAを使用したプレゼンテーション

VBAマクロの追加

Aspose.Slidesは、VbaProjectクラスを提供しており、VBAプロジェクト(およびプロジェクト参照)を作成し、既存のモジュールを編集できます。IVbaProjectインターフェースを使用して、プレゼンテーションに埋め込まれたVBAを管理できます。

  1. Presentationクラスのインスタンスを作成します。
  2. VbaProjectコンストラクターを使用して新しいVBAプロジェクトを追加します。
  3. VbaProjectにモジュールを追加します。
  4. モジュールのソースコードを設定します。
  5. への参照を追加します。
  6. Microsoft Officeへの参照を追加します。
  7. 参照をVBAプロジェクトに関連付けます。
  8. プレゼンテーションを保存します。

この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マクロを削除できます。

  1. Presentationクラスのインスタンスを作成し、マクロを含むプレゼンテーションをロードします。
  2. マクロモジュールにアクセスして削除します。
  3. 修正されたプレゼンテーションを保存します。

このPHPコードは、VBAマクロを削除する方法を示しています:

  # マクロを含むプレゼンテーションを読み込む
  $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マクロの抽出

  1. Presentationクラスのインスタンスを作成し、マクロを含むプレゼンテーションをロードします。
  2. プレゼンテーションにVBAプロジェクトが含まれているか確認します。
  3. VBAプロジェクトに含まれるすべてのモジュールをループしてマクロを表示します。

このPHPコードは、マクロを含むプレゼンテーションから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();
    }
  }