【NetOffice】COMアドインを読み込みを失敗させる。回復方法は?

  • 2012.11.22 Thursday
  • 20:04
JUGEMテーマ:コンピュータ

-----------------------------------------------------------
Summary
無効になったアドインを有効にするには
ファイルタブ>オプション
管理コンボボックスの「使用できないアイテム」
使用したいアイテムを選択で有効になります。

ただし、アドイン自体に根本的な問題がある場合は、個別に対応が必要です。
-----------------------------------------------------------


昨日、ちょっとしたミスで、Excelアドインが読み込めなくなり、ここ数日間作成したComアドインもNetOffice Developer Toolbox 1.1で作成した新規のCOMアドインも読み込めなくなり、なぜかVSTOで作成したCOMアドインは読み込めたりと、訳の分からない状態になりまして、直前にバックアップもとらずにレジストリを直接書き換えていたので、書き換えたり消してはいけないものを操作したに違いないと思い込み、Officeをアンインストールし再インストールしたものの、それでも解決せず、「あ〜NetOfficeの記事はこれにて終了だな」って半ばあきらめ、昨晩、床についたのですが、朝目覚めて、「あ!」っと思い出し、アドインを読み込めるようになりましたって朝、投稿したのですが、今回はいったい私が何をしたのか、ご紹介したいと思います。


最初、ExcelAddInのコンストラクタがいつ呼ばれているのか知りたくて、以下のようにDebugger.Breakメソッドを記述しました。実はこれは間違いで、Debugger.Launch
メソッドを利用した方が素直にアタッチできるようです。いままでずっとBreakメソッドを利用していたのですが・・・・。

namespace Art55.NetOfficeDemo20121120_001
{
    [Guid("15071DAF-177C-4438-9129-4B4DB82BFF84"), ProgId(AddInProcId), ComVisible(true)]
    public class ExcelAddIn : IDTExtensibility2, IRibbonExtensibility
    {
        public ExcelAddIn()
        {
            Debugger.Break();
        }
       
        ....
    }
}

このCOMアドインをレジストリーに登録します。レジストリに登録する際は、dll自体は読み込まないようなので、こけることはありません。

この状態でExcelを起動すると



Excelの起動中にCOMアドインがロードされ、ExcelAddInのコンストラクタが呼ばれるため、デバッガーにアタッチしようとします。そのため以下のダイアログが表示され、デバッグボタンを押せばVisual Studioにアタッチできると思っていたのですが、このタイミングではなぜかBreakメソッドではうまくアタッチできずに、Excelは落ちてしまいます。

そして2度目のExcelの起動をすると、以下のダイアログが表示されます、



ちゃんと「このアドインを無効にしますか?」と聞かれていまして、「はい」ボタンを押すと、今回、読み込みに失敗したExcelAddInというCOMアドインは無効なアドインとして登録されてしまいます。

これで、今回作成したCOMアドインはもちろんですが、なぜか他のCOMアドインも無効化されて読み込まれなくなります。想像ですが、COMアドインの場所が「mscoree.dll」になっているものが、すべて無効となってしまうようです。この無効というのは先日投稿したLoadBehaviorとは別物で、
アドインが無効化されるようです。なので



COMアドインダイアログを見ると、ExcelAddInのチェックが外れているだけのように見えますが、これにチェックを入れても有効化されません。COMアドインダイアログを開き直すと、またチェックが外れてしまうのです。もうExcelを壊してしまったって思っちゃいますよね。

で、実はよくよく見るとそうではなくて



アドインが無効なアプリケーションアドインに登録されてしまっているのが原因なようです。このアドインはExcel起動時にこけてしまい、そのままExcelもろとも終了させてしまうレベルのバグがあるため、無効化は当然なわけですが、では、有効化する方法

■無効なアプリケーション アドインを有効にする方法
Excelの上部にあるファイルタブをクリック。
オプションを選択します。


管理というコンボボックスに「Excelアドイン」というのがあるので、これを選択します。



使用できないアイテムダイアログが表示されるので、使用できるようにしたいアドインを選択し、「有効にする」ボタンを押せば、とりあえず復活します。


今回の場合は、復活させても、また無効になりますが・・・。

--------------------
実は、この問題に直面したのは、これがはじめてではありません。なのに忘れていました。焦りました。なかなかわかりにくい状況になるので、なにが起きているのか、わかりにくく、私のようなアホには難易度の高いものになります(汗)


--------------------------------------
本投稿は、CodePlexで公開されているNetOfficeを利用しています。
NetOffice - MS Office in .NET
http://netoffice.codeplex.com/

NetOffice関連の記事は下記にまとめています。
【NetOffice】【Excel】NetOfficeのまとめ
http://pro.art55.jp/?eid=1304102
--------------------------------------

コメント
コメントする








    
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
<< June 2018 >>

あわせて読みたい

あわせて読みたいブログパーツ

selected entries

categories

archives

recent comment

  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    art55 (05/22)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    分解大好き (05/18)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/04)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    Gen (02/04)
  • 【キーボード】RealForce が壊れて帰ってきた。
    art55 (04/29)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/23)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    かるあ (02/22)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    art55 (01/16)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    karuakun (01/16)
  • 【NetOffice】【Excel】死なないExcelプロセスをKillする。
    art55 (12/05)

recent trackback

recommend

recommend

recommend

C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) (JUGEMレビュー »)
Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー

recommend

ろんりと集合
ろんりと集合 (JUGEMレビュー »)
中内 伸光
とてもわかりやすいです。

recommend

recommend

シャノン・ノイマン・ディジタル世界
シャノン・ノイマン・ディジタル世界 (JUGEMレビュー »)
市川 忠男
4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

recommend

recommend

東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS
東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS (JUGEMレビュー »)

テンキーレス、静音のRealForce91UBK-S。スコスコ感がたまらなく気持ちいいです。家と会社で2台持ってます。

recommend

recommend

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) (JUGEMレビュー »)
Jeffrey Richter
発売予定美 2013年10月10日。.NET Frameworkとお付き合いする人のバイブルですね。

recommend

recommend

キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。

recommend

Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM