Excel for .NET
マクロ有効 Excel ファイルのロードおよび保存

Excel for .NET は、OpenXMLMacro ファイル形式のロードおよび保存をサポートします。Visual Basic Application(VBA)言語で記述されたマクロ有効 Excel ファイル(XLSM)を C1Excel にロードおよび保存できるようになりました。XLSM は、Microsoft Excel によって作成される Excel マクロ有効スプレッドシートです。VBA コードによってプログラムされたマクロが埋め込まれています。XLSM ファイルは、マクロが有効化されていること以外は XLSX ファイルと同じです。

次のコードは、VBA マクロを含むテンプレート xls ファイルをロードし、XLSM 形式でファイルを保存する方法の一例です。

  1. ツールボックスの Button コントロールをダブルクリックしてフォームに追加します。ボタンの Name プロパティと Text プロパティを変更します。たとえば、ボタンの Name は btnLoad に、ボタンに表示される Text は Load に設定できます。
  2. ツールボックスの C1XLBook コンポーネントをダブルクリックしてフォームに追加します。
  3. フォームの Button コントロールをダブルクリックして btnLoad_Click イベントを追加し、コードビューに切り替えます。
  4. 次のコードをフォームに追加して C1.C1Excel 名前空間を追加します。

    Visual Basic でコードを書く場合

    Visual Basic
    コードのコピー
    Imports C1.C1Excel
    

    C# でコードを書く場合

    C#
    コードのコピー
    using C1.C1Excel;
    
  5. 次のコードを btnLoad_Click イベントに追加して、ワークブックを .xlsm 形式で保存します。

    Visual Basic でコードを書く場合

    Visual Basic
    コードのコピー
    ' ブックにコピーします
    Dim xlsFileName As String = "..\..\XlsxTestBin.xlsm"
    C1XLBook1.Load(xlsFileName)
    C1XLBook1.Sheets(0)(0, 0).Value = "It is copy!"
    xlsFileName = xlsFileName.Replace(".xlsm", "Modified.xlsm")
    C1XLBook1.Save(xlsFileName)
    
    ' Excel ファイルを実行します
    System.Diagnostics.Process.Start(xlsFileName)
    

    C# でコードを書く場合

    C#
    コードのコピー
    // ブックにコピーします
    string xlsFileName = "..\\..\\XlsxTestBin.xlsm";
    c1XLBook1.Load(xlsFileName);
    c1XLBook1.Sheets[0][0, 0].Value = "It is copy!";
    xlsFileName = xlsFileName.Replace(".xlsm", "Modified.xlsm");
    c1XLBook1.Save(xlsFileName);
    
    // Excel ファイルを実行します
    System.Diagnostics.Process.Start(xlsFileName);
    
  6. [F5]キーを押してプロジェクトを実行すると、.xslm ファイルが以下に示すように表示されます。