C#でVBAマクロを操作する

VBA (Visual Basic for Applications)は、スプレッドシート関連の操作を自動化するためにMSExcelファイルで使用されるプログラミング言語です。 VBAマクロは、手動で実行する必要のあるタスクを高速化できるユーザー定義関数を作成するために使用されます。この記事では、プログラムでMSExcelファイルのVBAマクロを操作する方法を学習します。この記事の終わりまでに、C#を使用してExcelブックのVBAマクロを抽出、追加、および変更できるようになります。

ExcelファイルでVBAマクロを操作する-C#API

Aspose.Cells for .NETは、.NETアプリケーション内からのスプレッドシート操作を自動化するように設計されたC#クラスライブラリです。 APIは、MS Excelワークブックの作成、変更、および変換を可能にする幅広い機能を提供します。さらに、APIを使用すると、VBAマクロをシームレスに操作できます。 Aspose.Cells for .NETは、ダウンロードでDLLファイルとして利用できるだけでなく、NuGetでホストされます。

PM> Install-Package Aspose.Cells

C#を使用してExcelファイルからVBAマクロを抽出する

まず、既存のExcelブックからVBAマクロを抽出することから始めましょう。この操作を実行する手順は次のとおりです。

  • Workbookクラスのオブジェクトを作成して、Excelファイルをロードします。
  • Workbook.VbaProject.ModulesコレクションからVbaModuleオブジェクトへの各VBAモジュールにアクセスします。
  • VbaModule.Codesプロパティを使用して、各モジュールからコードを取得します。

次のコードサンプルは、C#を使用してExcelブックからVBAマクロを抽出する方法を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-cells/Aspose.Cells-for-.NETにアクセスしてください。
// ソースExcelファイルからブックオブジェクトを作成します
Workbook workbook = new Workbook("sample.xlsm");

// 各VBAモジュールからコードを抽出します
foreach (VbaModule module in workbook.VbaProject.Modules)
{
    string code = module.Codes;
    Console.Write(code);
}

C#を使用してExcelファイルにVBAマクロを追加する

Aspose.Cells for .NETでは、既存または新規のExcelファイルにVBAマクロを追加することもできます。これは、以下の手順に従って実行できます。

次のコードサンプルは、C#を使用してVBAマクロをExcelブックに追加する方法を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-cells/Aspose.Cells-for-.NETにアクセスしてください。
// 新しいブックを作成する
Workbook workbook = new Workbook();

// 最初のワークシートにアクセスする
Worksheet worksheet = workbook.Worksheets[0];

// VBAモジュールを追加する
int idx = workbook.VbaProject.Modules.Add(worksheet);

// VBAモジュールにアクセスし、その名前とコードを設定します
Aspose.Cells.Vba.VbaModule module = workbook.VbaProject.Modules[idx];
module.Name = "TestModule";

module.Codes = "Sub ShowMessage()" + "\r\n" +
"    MsgBox \"Welcome to Aspose!\"" + "\r\n" +
"End Sub";

// ブックを保存する
workbook.Save("output_out.xlsm", SaveFormat.Xlsm);

C#を使用してExcelファイルのVBAマクロを変更する

次の手順を使用して、Excelファイル内の既存のVBAマクロを変更することもできます。

  • Workbookクラスを使用してExcelファイルをロードします。
  • Workbook.VbaProject.ModulesコレクションからVbaModuleオブジェクトへのVBAモジュールにアクセスします。
  • VbaModule.Codesプロパティを使用して、目的のモジュールからコードを取得します。
  • コードを置き換え、Workbook.Save(String)メソッドを使用してExcelファイルを保存します。

次のコードサンプルは、C#を使用してExcelファイルのVBAマクロを変更する方法を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-cells/Aspose.Cells-for-.NETにアクセスしてください。
// ソースExcelファイルからブックオブジェクトを作成します
Workbook workbook = new Workbook("sample.xlsm");

// VBAモジュールコードを変更する
foreach (VbaModule module in workbook.VbaProject.Modules)
{
    string code = module.Codes;

    // 元のメッセージを変更されたメッセージに置き換えます
    if (code.Contains("This is test message."))
    {
        code = code.Replace("This is test message.", "This is Aspose.Cells message.");
        module.Codes = code;
    }
}

// 出力Excelファイルを保存します
workbook.Save("output_out.xlsm");

無料ライセンスを取得する

30日間有効な一時ライセンスを使用して、Aspose.Cells for .NETを無料で使用または評価できます。 今すぐ入手

結論

MS ExcelファイルのVBAマクロは、スプレッドシートに関連するさまざまな種類のタスクを自動化するために使用されます。プログラムでVBAマクロを処理するために、この記事では、C#を使用してVBAモジュールのコードを抽出、追加、および変更する方法について説明しました。 ドキュメントを使用して、C#スプレッドシート操作APIの詳細を調べることができます。

関連項目

ヒント:Aspose無料のマクロ削除Webアプリを確認することをお勧めします。