黙々とC#

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

C#読書会 『C# ショートコードプログラミング 第2版』に関する感想など 第3章

大阪で定期的に開催されているC# 読書会での『C# ショートコードプログラミング 第2版』に関する感想などをまとめました。

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

続きを読む

C#読書会 『C# ショートコードプログラミング 第2版』に関する感想など 第2章

大阪で定期的に開催されているC# 読書会での『C# ショートコードプログラミング 第2版』に関する感想などをまとめました。

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

続きを読む

C#読書会 『C# ショートコードプログラミング 第2版』に関する感想など 第1章

大阪で定期的に開催されているC# 読書会での『C# ショートコードプログラミング 第2版』に関する感想などをまとめました。

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

続きを読む

Excel C# Script入門講座へようこそ!

『全てのVBAコードを生まれる前に消し去りたい。
 すべての宇宙、過去と未来の全てのVBAを、この手で』

f:id:d_ymkw:20160713164718p:plain

このページはExcel VBAを実務で利用されている方で、VBAに心の底から辟易しており、現代的なプログラミング言語(C#6.0)を使って、Excelファイルから分離されたコードで、お手軽にExcel操作を行いたいという方を対象としています。

このページでは、Excelの操作には、VBAに代えてC# Scriptを使います。C# Scriptを実行するにあたっては、C# スクリプト実行エンジンとしてRoslyn for Scripting C#を組み込んだExcel VSTOアドイン "ExcelCSX" を用いています。

このページを通じて、忌まわしきExcel VBAと決別し、より便利で快適なC#スクリプトの魅力を体験して頂ければ幸いです。

  • Excel C# Script入門講座
    • Excel C# Script をはじめる前に
    • セルの操作
    • ワークシートの操作
    • ワークブックの操作
    • プログラムの基礎
    • プログラム制御文
    • Excel C# Script でよく使うメソッド
    • C# Script ポケットリファレンス
続きを読む

オブジェクトとプロパティ、メソッド

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

オブジェクトとプロパティ、メソッド

C# ScriptでExcelを操作するにあたっては、コード上で

  • 操作対象とするモノ
  • 操作内容

の2つを指定します。

前者については、Excelのワークブック(Workbook)やワークシート(Worksheet)、セル(Cell)などが操作対象となります。C# Script(コード)上で、これらの操作対象物を特定するものをオブジェクトと呼びます。*1

Excelにおいては、Excelのプロセス自身を表す Excel.Applicationオブジェクトを最上位として、当該プロセスで開いたWorkbookや、開かれたWorkbookに含まれるWorksheetが階層構造を構成しつつ保持されています。

Excel.Application
└ Excel.Application.Workbooks("****")
   └ Excel.Application.Workbooks("****").Worksheet
       └ Excel.Application.Workbooks("****").Worksheet("*****").Cells(1,1)

なお、ExcelCSXを用いる場合、現在実行中のExcelを示すExcel.Applicationオブジェクトは、変数名Excelでアクセスすることができます。

これらの各オブジェクトには、各種操作を行うためのプロパティメソッドが備えられています。

プロパティは、値を代入することで操作対象のオブジェクトの見た目や振る舞いを変更することができます。なお、プロパティの中には、値を代入することはできず、読み取り専用のプロパティも存在します。

例えば、セルの値を変更したい場合、以下のように、特定のWorksheet上のセルを示すRangeオブジェクトのValueプロパティに値を設定します。

Excel.ActiveWorkbook.Worksheets("Sheet1").Range("A1").Value = "C#";

メソッドは、操作対象のオブジェクトに対して何らかの動作をさせることができます。

例えば、特定のセルを選択(アクティブ)にする場合、以下のように、RangeオブジェクトのSelectメソッドを実行します。

Excel.ActiveWorkbook.Worksheets("Sheet1").Range("A1").Select();

操作したい内容に相当する プロパティメソッドについては種類が多いため、適宜MSDNや巷のWebページで調べる必要があります。また、Excel.Applicationオブジェクトの扱い方はコーディング記法に差こそあれ、VBAから利用する場合でも同様のため、多少の読み替えでVBAのページを参考にすることも可能です。

本連載では以降のページで、

  • 操作対象を示すオブジェクトの名称・指定方法
  • 各オブジェクトに用意された プロパティメソッド の名称・利用方法

について、基本的なものを網羅的に説明します。

*1:より厳密にはExcel.Applicationに関連するクラスのインスタンスや、インターフェースを実装したインスタンスをオブジェクトと呼びます。

C# Scriptの入力と実行

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

C# Scriptの入力と実行

実際にC# Scriptを入力して、実行するまでを簡単に説明します。

C# Scriptを保存するフォルダの指定

f:id:d_ymkw:20160808113855p:plain

まず、Select Folderをクリックして、C# Scriptが保存されている/これから保存するフォルダを指定してください。

f:id:d_ymkw:20160808114006p:plain

選択したフォルダ内に既にC# Scriptファイル(*.csx)が存在する場合には、ドロップダウンボックスにファイル名が表示されます。

C# Scriptの新規作成

ここでは、新規にC# Scriptを入力してみます。

NewScriptボタンをクリックします。

エディタ(この場合、VisualStudioCode)が自動的に立ち上がります。

とりあえず、以下のコードを入力してください。

Excel.ActiveWorkbook.ActiveSheet.Range("A1").Value = "Hello C# Script";

f:id:d_ymkw:20160808114245p:plain

"hello.csx"という名前で保存します。

C# Scriptの編集

この記事では取り上げませんが、既に存在する*.csxを編集したい場合は、ドロップダウンボックスで選択した後、Editボタンをクリックするとファイルを選択した状態でエディタが立ち上がります。*1

C# Scriptの実行

Reloadをクリックした後*2

Script File:のドロップダウンボックスで"hello.csx"を選択します。

Runボタンをクリックすると、スクリプトが実行されます。

f:id:d_ymkw:20160808114511p:plain

Excelを立ち上げてから初回の実行のみ若干実行までに時間がかかります。スクリプト実行中は、Runボタンはグレーアウトされ、スクリプトの実行が終了すると、水色に戻ります。

*1:厳密には、単にOptionsで選択したエディタを、ファイル名を引数で渡して実行するだけです。

*2:Reloadボタンをクリックすると、SelectFolderで選択されたフォルダ内の*.csxを読み込み、ドロップダウンボックスに一覧表示します。

ExcelCSXの導入

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

ExcelCSXの導入

インストールに必要な要件

  • OSがWindows7 以降であること
  • .NET Framework 4.6 がインストールされていること
  • Excel2007 以降 がインストールされていること

インストール手順

githubで公開されているExcelCSX のレポジトリのreleasesページを開きます。

ExcelCSXのパッケージ(zipファイル)をダウンロードします。

ダウンロードしたファイルを展開します。

f:id:d_ymkw:20160808111728p:plain

フォルダの中にある"ExcelCSX.vsto"を実行します。

f:id:d_ymkw:20160808111936p:plain

警告画面が表示されますが、そのままインストールしてください。

f:id:d_ymkw:20160808112010p:plain

正常にインストールされると上記画面が表示されます。

最初にすべきこと

EXcelCSX導入後に、Excelを起動するとアドインタブに以下の機能が追加されています。

f:id:d_ymkw:20160808112310p:plain

(インストールしたにも関わらず表示されない場合は、「リボンのユーザー設定」から「アドイン」タブのチェックをON/OFFすると表示される場合があります。)

「Options」ボタンをクリックし、設定画面を表示します。

f:id:d_ymkw:20160808112550p:plain

"Editor Path" に、C# Scriptの編集に使いたいエディタを指定してください。

(デフォルトではVisual Studio Codeのパスを指定しています。)

オススメのエディタはVisual Studio Codeです。

C# エクステンションを入れると、C# Scriptファイル(*.csx)を開いた際に、ハイライトが有効になるほか、一部の補完機能・入力支援機能が使えるようになります。素のテキストエディタに比べてぐっと書きやすくなります。

"Default Folder Path"は、起動時にデフォルトで読み込まれるフォルダを指定します。C# Scriptを保存するフォルダを指定すると良いです。