Excelアドイン開発について
VSTOでのExcelアドイン開発をしたくなったので、開発した記録を書きます。

VSTOでのOutlookアドイン開発手順 その1
Outlookアドイン開発
VSTOでのOutlookアドイン開発をしたくなったので、開発した記録を書きます。
開発環境
VS2017 Community,C#
Windows10 Pro 64bit
Outlook2016
...
内容的には、上記のOutlookのアドイン開発と全くかわらないのですが、それでは面白くないので、今回は選択されたエクセルのセル番号を取得するコードを追加したいと思います。
開発環境
VS2017 Community,C#
Windows10 Pro 64bit
Excel 2016
手順
ストレートに以下の手順で行けると思います。
- 新しいプロジェクト⇒Visual C# タブ⇒ office/Sharpoint ⇒ VSTOアドイン選択 ⇒ Excel2013と2016 VSTOアドイン Visual C#⇒OK押す
- ソリューションができているので、ソリューションを右クリック⇒追加⇒新しい項目
- リボン(ビジュアルなデザイナー)を選択⇒追加Checkボックスをクリックして配置
- 新規追加されたリボンにCheckボタンを追加してください。
- Checkボックスのプロパティーにコードを追加
- F5でデバッグ開始(Releaseの場合は、マイコードのみに関する警告がでます。)
- Excel上で動作を確認します。アドインタブを選択します。
- Checkボックスのチェックをオンにして、セルの選択を変更すると、どのセルを選択したかを表示するメッセージボックスが現れます。
- 以上で大まかな手順は終了。
詳細手順(画像をみながら)
- 新しいプロジェクト⇒Visual C# タブ⇒ office/Sharpoint ⇒ VSTOアドイン選択 ⇒Excel2013と2016 VSTOアドイン Visual C#⇒OK押す
- ソリューションができているので、ソリューションを右クリック⇒追加⇒新しい項目
- リボン(ビジュアルなデザイナー)を選択⇒追加Checkボタンをクリックして配置
- 新規追加されたリボンにCheckボタンを追加してください。
- Checkボタンのプロパティーにコードを追加・Ribbonクラス内
- F5でデバッグ開始(Releaseの場合は、マイコードのみに関する警告がでます。)
- Excel上で動作を確認します。アドインタブを選択します。
- Checkボタン(Chechボックス)のチェックをオンにして、セルの選択を変更すると、どのセルを選択したかを表示するメッセージボックスが現れます。
- 以上で詳細手順は終了です。





public partial class Ribbon1
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
// 1行追加
Microsoft.Office.Interop.Excel.Worksheet activeSheet;
// プロパティで追加した関数内にコード追加
private void CheckBox1_Click(object sender, RibbonControlEventArgs e)
{
if(checkBox1.Checked)
{
activeSheet = Globals.ThisAddIn.Application.ActiveSheet;
// イベントハンドラの追加を行います。
activeSheet.SelectionChange
+= new Microsoft.Office.Interop.Excel.DocEvents_SelectionChangeEventHandler(SelectionChanged);
}
else
{
// イベントハンドラの削除を行います。
if (activeSheet != null) {
activeSheet.SelectionChange
-= new Microsoft.Office.Interop.Excel.DocEvents_SelectionChangeEventHandler(SelectionChanged);
}
}
}
// 変化した際に呼ばれる関数を追加
private void SelectionChanged(Microsoft.Office.Interop.Excel.Range _target)
{
int col = _target.Column;
int row = _target.Row;
System.Windows.Forms.MessageBox.Show("SelectionChanged " + "col:" + col.ToString() + "," + "row:" + row.ToString());
}
}

