Excel Add-in アプリにおけるシートとセルの操作のお作法について

[今日のみちしるべ 第6回 数字にまつわるお話 "69"]

"3" のつく数字と "3" の倍数のお話ではないです。念のため(笑) 

みなさんは自分にゆかりのある数字ってありますか?

もしくは意識したことがありますでしょうか。僕は"23" という数字を身近に感じています。

自分の誕生日ということや、長男(にいさん)だったり、嫁の名前がふみとか、以前の携帯電話も "23" という数字の組み合わせがつながっていたりとこの数字に不思議な縁を感じてなりません。

日によって気になる数字もあります。今日は "69" という数字が気になりました。

温泉のロッカーのキーがそうだったり、買い物をした際の合計が 696 円とかなんとなーく気になったので、この数字の意味を調べてみました。

調べてみたところ、陰陽(太極)を意味するとのことでした。

Wikipedia で調べたのですが、分かりやすいところでいうと、「陰があれば陽があり、陽があれば陰があるように、互いが存在することで己が成り立つ考え方。」ということでした。

つまり、物事や事象にはある部分とそれに相反する部分が存在し、一つのものを作り出しているということです。

人で言うと、よい部分と悪い部分が存在し、それぞれが重なり合って、その人が成り立っているのかなと思います。

例えば、自身の悪い部分に気づき、それに対して、直そうとすることは悪いことではないと思いますが、否定することは自分を否定してしまうのかなということでしょうか。

自分の悪い部分を否定してしまうと自己嫌悪や自身の崩壊に繋がるのかなという気がします。

理想とか気づきとかもすごい大事なのかなと思いますが、根本的には自分を否定してしまわずに、受け入れる(許してあげる)ということが大事なのかなと少し思いました。

数年前に「ブレイブ ストーリー」というアニメの映画を子供と一緒に見に行ったのですが、その時に主人公がゴールにたどり着くための最終関門で自分のよい部分と悪い部分が戦うシーンがありました。(ここでも、陰陽の太極図が出ていました。)

結局、勝利条件は自分の悪い部分、もしくは、よい部分を受け入れてあげることでした。

主人公が自分自身の悪い部分を抱きしめて「おかえり」と言っていた姿を今日、思い出し、自分の悪い部分を否定せずにそこを理解し許してあげることも楽に生きるために大事なのかなと思いました。(あまりに許しすぎるのもどうかなと思いますが。。。(笑))

  [本題]

さて、前編はちょっとスピリチュアル(?)でしたが、本題に入りたいと思います。

実は Excel や Word のアドインはドキュメントレベルのソリューションと比較して、ドキュメント上のデータの操作のお作法が難しいところがあります。

例えば、Excel だと、Sheet のクラスがないので、明示的にセルの範囲を指定できないところがあります。

ですので、アドイン側から、あらかじめ定義してあげて操作をするというところが必要になります。

まずは、Microsoft.Office.Interop.Excel を参照してください。

下記では、作業ウィンドウのクラスで参照しています。

VB版:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    'Sheet(n) を利用するための宣言
    Dim ws As Worksheet = Globals.ThisAddIn.Application.Sheets("Sheet2")

    'Sheet2 を選択します。
    ws.Select(1)

    'セル範囲を設定します。
    Dim rng As Range = Globals.ThisAddIn.Application.Selection

    '1行目の各セルに値を入力します。
    rng(1, 1) = "出発駅"
    rng(1, 2) = "到着駅"
    rng(1, 3) = "料金"
    rng(1, 4) = "経路"

    '2行目の各セルに値を入力します。
    rng(2, 1) = "新宿"
    rng(2, 2) = "渋谷"
    rng(2, 3) = "150"
    rng(2, 4) = "JR山手線"

End Sub

 C#版:

private void button1_Click(object sender, EventArgs e)
{
    //Sheet[n] を利用するための宣言
    Worksheet ws = (Worksheet)Globals.ThisAddIn.Application.Sheets["Sheet2"];

    //Sheet2 を選択します。
    ws.Select(1);

    //セル範囲を設定します。
    Range rng = (Range)Globals.ThisAddIn.Application.Selection;

    //1行目の各セルに値を入力します。
    rng[1, 1] = "出発駅";
    rng[1, 2] = "到着駅";
    rng[1, 3] = "料金";
    rng[1, 4] = "経路";

    //2行目の各セルに値を入力します。
    rng[2, 1] = "新宿";
    rng[2, 2] = "渋谷";
    rng[2, 3] = "150";
    rng[2, 4] = "JR山手線";           
}

image

参考資料については以下に記載しております。(非常にアドインレベルの情報が少なく申し訳ないですが。。。)

アプリケーション レベルのアドインのプログラミング

http://msdn.microsoft.com/ja-jp/library/bb157876.aspx

ドキュメントに紐づかないアプリケーションの作成にいろいろと応用できるかと思いますので、ぜひ、ご利用ください。

今後もアドインベースのアプリケーションで何かサンプルがありましたら、公開したいと思います。