C# でエクセル操作するツール
◆ C# のエクセル操作を REPL で実行してどう変わるのか簡単に見れる
ファイル整理してると掘り出されたツールがあったので簡単に紹介です
C# で VBA と同じような関数でエクセルを操作することができます
エクセルファイルのバイナリを作るというものじゃなく内部で本当にエクセルが動いてるものです
便利なのですが 開発中にどうなるのか確認しながら動かしたいときにはいろいろ使いづらいところもあります
個人的には REPL 的な物が欲しいのです
ブラウザでコンソールでなにか実行すると DOM が変わって画面が更新されるみたいなものです
そう思ってできたのがこれ
まずはウィンドウのほうですがだいたい REPL です
上に C# コードを書いて左上の ▶ ボタンを押すと
結果が下側にでます
using したり代入したり複数文を書いたりもできます
ログのタブを開くと過去のログが見れます
実行ボタンの隣の本みたいなアイコンを押すとよくあるファイル選択ダイアログが出ます
エクセルファイルを開きます
開くと エクセルの方でファイルが開かれます
この状態で
と実行すると エクセルの A1 セルが "abc" と更新されます
その他どういう書き方で何ができるかは マイクロソフトのドキュメント参照です
全体がまとまってるページが無いのですが ここからたどっていけば一応シートや Range の操作も書いてるはずです
これで実行してみてエクセル側がどう変わるのか簡単に確認できるようになりましたね
アイコンから開かず自分でスクリプトを実行で開いても問題ありません
開くボタンは自分で毎回書くの面倒だったのでボタン作ったくらいのものです
新規作成とか保存機能は用意してないですが スクリプトでそういうコードを実行すれば動きます
新規ブックつくって保存するのだと
で可能です
ウィンドウを閉じるとエクセルも閉じるので そのとき更新があればエクセルが保存しますか?と聞いてくれるのでそこでも保存できます
Release.zip をダウンロードして解凍すれば使えます
C# で VBA と同じような関数でエクセルを操作することができます
エクセルファイルのバイナリを作るというものじゃなく内部で本当にエクセルが動いてるものです
便利なのですが 開発中にどうなるのか確認しながら動かしたいときにはいろいろ使いづらいところもあります
個人的には REPL 的な物が欲しいのです
ブラウザでコンソールでなにか実行すると DOM が変わって画面が更新されるみたいなものです
そう思ってできたのがこれ
インタラクティブに実行
起動するとウィンドウと一緒にエクセルが起動しますまずはウィンドウのほうですがだいたい REPL です
上に C# コードを書いて左上の ▶ ボタンを押すと
結果が下側にでます
using したり代入したり複数文を書いたりもできます
ログのタブを開くと過去のログが見れます
エクセル
ここからがエクセル部分です実行ボタンの隣の本みたいなアイコンを押すとよくあるファイル選択ダイアログが出ます
エクセルファイルを開きます
開くと エクセルの方でファイルが開かれます
この状態で
sheets[1].Range["A1"] = "abc"
と実行すると エクセルの A1 セルが "abc" と更新されます
その他どういう書き方で何ができるかは マイクロソフトのドキュメント参照です
全体がまとまってるページが無いのですが ここからたどっていけば一応シートや Range の操作も書いてるはずです
これで実行してみてエクセル側がどう変わるのか簡単に確認できるようになりましたね
スクリプト中で使える変数
sheets など簡単にエクセルにアクセスできるようにいくつか変数を用意しています- app
Excel のインスタンス - books
app.Workbooks と同じ - book
本のアイコンからエクセルファイルを開いた後にその book を参照できる - sheets
book.WorkSheets と同じ
アイコンから開かず自分でスクリプトを実行で開いても問題ありません
開くボタンは自分で毎回書くの面倒だったのでボタン作ったくらいのものです
新規作成とか保存機能は用意してないですが スクリプトでそういうコードを実行すれば動きます
新規ブックつくって保存するのだと
var book1 = books.Add();
book1.SaveAs("filepath.xlsx");
で可能です
ウィンドウを閉じるとエクセルも閉じるので そのとき更新があればエクセルが保存しますか?と聞いてくれるのでそこでも保存できます
ダウンロード
本体はちょっとだけなのにスクリプト実行などの依存パッケージ含めるとファイルサイズ大きくなったのでブログじゃなく外部の Gist においてますRelease.zip をダウンロードして解凍すれば使えます