読者です 読者をやめる 読者になる 読者になる

黙々とC#

"In a mad world of VBA, only the mad are sane" 『VBAという名の狂った世界で狂っているというのなら私の気は確かだ』


ExcelCSXの決まりごと

Excel C# Script入門講座 要加筆修正

本記事は、Excel C# Script入門講座の1記事です。

ExcelCSXの決まりごと

ExcelCSXでC# Scriptを書くにあたっての、ExcelCSX特有の決まりごとなどをまとめています。

C# Scriptの基本的な書き方・仕様に関しては、Roslyn for Scripting C# に準拠しています。

ExcelCSXにおいては、より手軽にExcelアプリケーションをC# Scriptで操作できるように、いくつかの拡張を施しています。以下ではこれらの拡張について説明を行っています。

スクリプトの実行

C#スクリプトの実行は、VSTOアドインとは別プロセス(非同期)で行われる。

ただし、操作によっては、Excel本体のプロセスを一時的にロックする場合がある(条件不明)。

デフォルトの参照・using

System.Dynamic

のみ参照・using済み。

これにより、dynamic型はなんの設定もなしにデフォルトで利用可能。

その他のライブラリについては、一切読み込まないため、適宜 #r で参照を追加するととともに、using で名前空間を指定する必要あり。

ExcelCSXを実行中のExcelアプリケーションへのアクセス

ExcelCSXで実行するC# Scriptファイルにおいては、変数名 Excelで、ExcelCSXを実行中のExcelアプリケーション(プロセス)にアクセスすることが可能です。

変数ExcelExcel.Applicationオブジェクトです。なお、Applicationオブジェクト以下の各型を指定する煩わしさを省略するため、ExcelCSX上では、便宜上、dynamic型に変えています。

#loadによる別スクリプトのロードについて

ExcelCSXで実行するC# Scriptファイルにおいては、#loadディレクティブで、実行中のスクリプトファイル(*.csx)のあるディレクトリ下を検索します。

a.csx, b.csxが同一フォルダに存在する場合、a.csxからは以下のように、ファイル名のみの記載でb.csxを読み込むことが可能です。

#load "b.csx"

var x = 20;