ファイルを開いたタイミングでデータを取得したいです。色々やってみると、WordとExcelで若干違うようです。ハマったのでメモ
Wordの場合
Startupに開いた時の処理を書きます。
しかし、現在のファイルから別のファイルを開いた時に処理されませんので、
Openイベントにも書きます。
ThisAddIn.cs
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
//起動時の処理を書きます~
//現在のファイルから別のファイルを開いた時に動かすために書きます
this.Application.DocumentOpen += Alication_Open;
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
void Alication_Open(Word.Document Doc) {
//起動時の処理を書きます~
}
}
Excelの場合
Startupまたは、Openイベント時に書くとエラーになります。
Excelの場合はActiveの時に書きます。Windowを切り替えるたびに実行されると思いきや、そうではないみたいです。
ThisAddIn.cs
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
//ファイルを開いた時しか通りません
this.Application.WorkbookActivate += Application_Active;
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
void Application_Active(Excel.Workbook wb) {
//起動時の処理を書きます~
}
}
ちなみにWordでActiveのタイミングで処理を書くと、画面をクリックするたびに処理が流れてしまいます。
この微妙な仕様の違いが難しい・・・
また、その他のイベントについてはMSDNに詳しく書いてあります。
Word:https://msdn.microsoft.com/ja-jp/library/office/ff198329.aspx
Excel:https://msdn.microsoft.com/ja-jp/library/office/ff198091.aspx