どうも
長期開発中の社内管理ソフトで
いきなりバグが発生した
内容は
Microsoft.Office.Interop.Excelのバージョンが
違うため利用できない・・・
なんで??
結果から言うと
開発環境の変化が原因でした。
以前開発に利用していたPCに
Office2003がインストールされていて
COM参照にMicrosoft Excel 11.0 Object Libraryを
利用していたのですが
Surfaceで開発環境完全移行を先日行い
Surfaceからアプリの発行を行ったところ
自動的にMicrosoft Excel 16.0 Object Libraryに変更されていました。
Office2003持ってない・・・
もちろんOffice2003をインストールなんて
面倒なことはせずに
Google先生に聞いたところ

こちらのページが見つかりました
このページの内容に従い
XPのCOMをダウンロードし
見事Microsoft.Interop.Excelをゲット!
どうやらリンク先のリンク先(マイクロソフトのダウンロードページ)がなくなっている様子。
ちょっとだけ調べてみたがダウンロードサイトが見つけられなかった。
ものは試しでVisual Studio のNuGetパッケージを参照から「Excel」で検索してみた。
あった。
本家Microsoftから発行しているので間違いない。
「Microsoft.Office.Interop.Excel」という名称。
バージョンも12,14,15と選べるようだ。
ちなみに、ツール->NuGetパッケージマネージャ->ソリューションのNuGetパッケージの管理を開き、参照タブで検索すると出てくる。
ただし、実際に動作確認等はしていないので注意。みつけた報告だけw
出来る限りCOM参照を使わない他の方法で開発することをお勧めする、確実に後から面倒なことが起きるのでw。
参照内容の変更
今利用しているObject Libraryを変更する方法が
よくわからなかったので
ソリューションエクスプローラから
参照内の
・Microsoft.Interop.Excel
・Excel
を削除し
再度、参照を追加
追加したのは
・Microsoft.Interop.Excel(XPのCOM内)
・Office
の2つ
とりあえずデバッグ実行!!
問題なくビルドされ
Excelへのアクセスも問題なし!!
環境の変化は要注意!!
そんなこんなで
夜勤の人に印刷ができなかったと怒られましたが
無事、修復完了です。
まさかCOM参照が変わってたなんて
開発環境の移行はもう少し
慎重にやらなきゃだめですね
超オススメ キーボード
コメント