GrapeCity.devlog

グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の最新情報をお届けします。製品のTIPSや発売情報、イベントのお知らせなどをいち早く発信中です。

Excelマクロに関するよくある質問 ー DioDocsでxlsmファイルを読み込めますか?ー

Excel関連製品によくある質問

グレープシティの開発支援ツールはExcel互換機能を搭載するものが多々あります。
SPREAD(スプレッド)がその代表格で、各種プラットフォームに対応したコンポーネントを提供しています。

SPREAD(スプレッド)ー Windows Forms/WPF/ASP.NET Web Forms/JavaScript | グレープシティ株式会社

また、長年Excelライクのコンポーネントを開発、提供してきたノウハウを活かし、Salesforceやkintoneなどノンプログラミング環境にExcelライクのUIを提供するプラグイン製品もあります。

一方で、2018年10月にリリースしたDioDocs(ディオドック)は、これらとは異なる方法でExcelにアプローチしています。Excel風の画面を提供することなくExcelファイルを生成、更新することを目的としたAPIライブラリ「DioDocs for Excel」は、コードでExcelのオブジェクト構造を造り上げてファイルに保存します。

Excelを操作する製品で共通して頂戴するお問い合わせのひとつに「マクロ対応」があります。
日本のシステムに深く根を張るExcelが、マクロを抜きに語ることができないことは周知の事実です。 多くの現場で、マクロを使って使いやすくしたExcelシステムが可動し、マクロ有効ファイル(.xlsm)が存在します。

その資産を扱うためExcel対応製品には「マクロ対応」に関する質問が寄せられます。

結論から申し上げるとDioDocsにマクロを作成、更新する機能はありません。
製品の特性上、必要としない機能です。
しかし、.xlsmファイルを扱えないということではありません。


Excelマクロに対応していますか?

DioDocs for Excelがシステムに組み込まれて使われるシーンの多くは、既存のExcelファイルの操作です。
データからExcelファイルを作成することができますが、実際の現場ではシステムやユーザーが作成済みのExcelファイルを読み込み、更新、保存することに力を発揮します。

そのためアプリケーション内で操作するためのワークブックオブジェクトに既存ファイルを読み込むことが可能です。
以下がそのサンプルコードです。
Openメソッドで各種ファイルを読み込むコードを列挙しました。

//新しいワークブックを生成
var workbook = new GrapeCity.Documents.Excel.Workbook();

// ********************************************************************
//【1】Excelファイルの読み込み
workbook.Open(filepath + "source.xlsx", OpenFileFormat.Xlsx);

// ********************************************************************
//【2】Excelファイル(パスワード付き)の読み込み
//    パスワードを設定したXLSX読み込みオプションを作成
XlsxOpenOptions options = new XlsxOpenOptions();
options.Password = "NaiSen%217";
workbook.Open(filepath + "office_map_final.xlsx", OpenFileFormat.Xlsx);

// ********************************************************************
//【3】CSVファイルの読み込み
workbook.Open(filepath + "data_181203.csv", OpenFileFormat.Csv);

// ********************************************************************
//【4】ハイフン区切りのCSVファイルの読み込み
//    ハイフンを区切り文字としたCSV読み込みオプションを作成
CsvOpenOptions options = new CsvOpenOptions();
options.SeparatorString = "-";
workbook.Open(filepath + "B-data-181127.csv", options);

読み込み方法は、各種ファイル(Excel*1、パスワード付Excel*2、CSV*3、ハイフン区切りCSV*4)ごとにデモで紹介しています。

このようにOpenメソッドは様々なオプションを設定して既存ファイルを読み込むことができます。
その読み込みファイル形式パラメータのひとつとして、マクロ有効ファイル(.xlsm)指定が用意されています。

// マクロ有効ファイルを読み込む
workbook.Open(filepath + "syohin_data_input.xlsm", OpenFileFormat.Xlsm);

同じようにファイルを保存するSaveメソッドでもファイル形式パラメータを用意しているので、読み込んだマクロ有効ファイルをそのままの形式で保存できます。

// マクロ有効ファイルを保存する
workbook.Save(filepath + "syohin_data_input_update.xlsm" ,SaveFileFormat.Xlsm);  

このようにライブラリでマクロを操作することはありませんが、逆にマクロ部分に一切影響を与えることなく、マクロ有効ファイルを読み込み/保存することができます。

マクロを駆使した既存システムの代替えを目的としたアプリケーション開発が行われ、マクロを利用しなくなった場合でも、データを含むExcelファイルとしてマクロ有効ファイルをシステムに組み込むことが可能になるわけです。

マクロ有効ファイルの読み込みと保存については、Webサイトにデモアプリケーションを用意していますのでお試しください。

DioDocsデモ

Excel ファイル(.xlsm)のインポート | DioDocs for Excel

利用方法

コードで内容を更新しても、記述したマクロに影響がないことを確認するデモです。
[実行]ボタンをクリックすると、コードでシートを更新したマクロ有効ファイルがダウンロードできます。
ダウンロードしたファイルをExcelで開きマクロを実行するとメッセージボックスを表示します。
右上の[テンプレート]ボタンから元のマクロ有効ファイルがダウンロード可能です。同じマクロが記録されています。

DioDocs for Excelの機能

各ファイルの読み込み機能は、以下の各デモアプリケーションで体験できます。