LoginSignup
5
4

More than 5 years have passed since last update.

【VSTO】ファイルを開いたときのイベントを捕まえる

Last updated at Posted at 2015-12-21

ファイルを開いたタイミングでデータを取得したいです。色々やってみると、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

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4