VBAマクロは、PowerPointプレゼンテーションで繰り返しタスクを実行したり、グラフやフォームを生成したりするために使用されます。プログラムでプレゼンテーションを操作しているときに、VBAマクロを操作する必要がある場合があります。これに従って、この記事では、Javaを使用してPowerPointプレゼンテーションでVBAマクロを追加、抽出、または削除する方法を学習します。
- PowerPointVBAマクロ用のJavaAPI
- PowerPointプレゼンテーションにVBAマクロを追加する
- PowerPointプレゼンテーションからVBAマクロを抽出する
- PowerPointプレゼンテーションからVBAマクロを削除する
PowerPointVBAマクロ用のJavaAPI
プレゼンテーションでVBAマクロを操作するには、Aspose.Slides for Javaを使用します。これは、Javaアプリケーション内からPowerPointプレゼンテーションを作成または操作できる機能豊富なAPIです。 APIをダウンロードするか、次のMaven構成を使用してインストールできます。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-slides</artifactId>
<version>21.7</version>
<classifier>jdk16</classifier>
</dependency>
Javaを使用してPowerPointプレゼンテーションにVBAマクロを追加する
以下は、Javaを使用してPowerPointプレゼンテーションにVBAマクロを追加する手順です。
- まず、Presentationクラスのインスタンスを作成して、PowerPointプレゼンテーションをロードします。
- Presentation.setVbaProject()メソッドを使用して、新しいVbaProjectを割り当てます。
- Presentation.getVbaProject().getModules().addEmptyModule(String)メソッドを使用して、空のVBAモジュールを追加します。
- 追加されたモジュールの参照をIVbaModuleオブジェクトに取得します。
- IVbaModule.setSourceCode()メソッドを使用して、VBAモジュールにソースコードを追加します。
- Microsoft Officeへの参照を作成し、それらをPresentation.getVbaProject().getReferences()コレクションに追加します。
- 最後に、Presentation.save(String, SaveFormat.Pptm)メソッドを使用してプレゼンテーションファイルを保存します。
次のコードサンプルは、Javaを使用してPowerPointプレゼンテーションに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();
}
Javaを使用してPowerPointからVBAマクロを抽出する
以下は、Javaを使用してPowerPointプレゼンテーションからVBAマクロを抽出する手順です。
- まず、Presentationクラスを使用してマクロ対応のPowerPointプレゼンテーションをロードします。
- 次に、Presentation.getVbaProject()がnullを返すかどうかを確認します。
- Presentation.getVbaProject().getModules()を使用して、コレクション内の各IVbaModuleをループします。
- 最後に、IVbaModule.getSourceCode()メソッドを使用してソースコードを抽出します。
次のコードサンプルは、PowerPointVBAマクロを抽出する方法を示しています。
// プレゼンテーションを読み込む
Presentation pres = new Presentation("VBA.pptm");
try {
if (pres.getVbaProject() != null) // check if Presentation contains VBA Project
{
// VBAモジュールをループする
for (IVbaModule module : pres.getVbaProject().getModules())
{
System.out.println(module.getName());
System.out.println(module.getSourceCode());
}
}
} finally {
if (pres != null) pres.dispose();
}
PowerPointVBAマクロを削除する
VBAプロジェクトのインデックスを使用して、PowerPointから特定のVBAマクロを削除することもできます。この操作を実行する手順は次のとおりです。
- まず、Presentationクラスを使用してマクロ対応のPowerPointプレゼンテーションをロードします。
- 次に、Presentation.getVbaProject().getModules().remove(IVbaModule)メソッドを使用してインデックスでVBAモジュールを削除します。
- 最後に、Presentation.save(String, SaveFormat.Pptm)メソッドを使用して更新されたプレゼンテーションを保存します。
次のコードサンプルは、PowerPointVBAマクロを削除する方法を示しています。
// プレゼンテーションを読み込む
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();
}
無料のAPIライセンスを取得する
一時ライセンスをリクエストすることで、評価の制限なしにAspose.Slides for Javaを使用できます。
結論
この記事では、Javaを使用してPowerPointVBAマクロを操作する方法を学習しました。特に、PowerPointプレゼンテーションでVBAマクロを追加、抽出、および削除する方法を見てきました。 APIの他の機能を調べるには、ドキュメントを参照してください。また、フォーラムからお気軽にご相談ください。
関連項目
ヒント:AsposeオンラインVBAマクロ削除ツールを試してみることをお勧めします。