VBAによるプレゼンテーション
Contents
[
Hide
]
注意
マクロを含むプレゼンテーションを別のファイル形式(PDF、HTMLなど)に変換すると、Aspose.Slidesはすべてのマクロを無視します(マクロは結果のファイルには持ち込まれません)。
プレゼンテーションにマクロを追加するか、マクロを含むプレゼンテーションを再保存すると、Aspose.Slidesは単にマクロのバイトを記録します。
Aspose.Slidesは決してプレゼンテーション内のマクロを実行しません。
VBAマクロを追加する
Aspose.Slidesは、VBAプロジェクト(およびプロジェクト参照)を作成し、既存のモジュールを編集するためにVbaProjectクラスを提供します。プレゼンテーションに埋め込まれたVBAを管理するには、IVbaProjectインターフェイスを使用できます。
- Presentationクラスのインスタンスを作成します。
- VbaProjectコンストラクタを使用して新しいVBAプロジェクトを追加します。
- VbaProjectにモジュールを追加します。
- モジュールのソースコードを設定します。
への参照を追加します。 - Microsoft Officeへの参照を追加します。
- 参照をVBAプロジェクトに関連付けます。
- プレゼンテーションを保存します。
このJavaコードは、ゼロからプレゼンテーションにVBAマクロを追加する方法を示しています:
// プレゼンテーションクラスのインスタンスを作成します
Presentation pres = new Presentation();
try {
// 新しいVBAプロジェクトを作成します
pres.setVbaProject(new VbaProject());
// VBAプロジェクトに空のモジュールを追加します
IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
// モジュールのソースコードを設定します
module.setSourceCode("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プロジェクトに参照を追加します
pres.getVbaProject().getReferences().add(stdoleReference);
pres.getVbaProject().getReferences().add(officeReference);
// プレゼンテーションを保存します
pres.save("test.pptm", SaveFormat.Pptm);
} finally {
if (pres != null) pres.dispose();
}
AsposeのMacro Removerをチェックしてみると良いでしょう。これは、PowerPoint、Excel、Wordドキュメントからマクロを削除するために使用される無料のWebアプリです。
VBAマクロを削除する
PresentationクラスのVbaProjectプロパティを使用して、VBAマクロを削除できます。
- Presentationクラスのインスタンスを作成し、マクロを含むプレゼンテーションをロードします。
- マクロモジュールにアクセスし、それを削除します。
- 修正されたプレゼンテーションを保存します。
このJavaコードは、VBAマクロを削除する方法を示しています:
// マクロを含むプレゼンテーションをロードします
Presentation 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 (pres != null) pres.dispose();
}
VBAマクロを抽出する
- Presentationクラスのインスタンスを作成し、マクロを含むプレゼンテーションをロードします。
- プレゼンテーションにVBAプロジェクトが含まれているか確認します。
- VBAプロジェクト内のすべてのモジュールをループして、マクロを表示します。
このJavaコードは、マクロを含むプレゼンテーションからVBAマクロを抽出する方法を示しています:
// マクロを含むプレゼンテーションをロードします
Presentation pres = new Presentation("VBA.pptm");
try {
if (pres.getVbaProject() != null) // プレゼンテーションがVBAプロジェクトを含むか確認します
{
for (IVbaModule module : pres.getVbaProject().getModules())
{
System.out.println(module.getName());
System.out.println(module.getSourceCode());
}
}
} finally {
if (pres != null) pres.dispose();
}