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()); } }