PR

COM参照でこけたので備忘録

CSharpTitle C#

どうも
長期開発中の社内管理ソフトで
いきなりバグが発生した
内容は
Microsoft.Office.Interop.Excelのバージョンが
違うため利用できない・・・
なんで??

スポンサーリンク

結果から言うと

開発環境の変化が原因でした。
以前開発に利用していたPCに
Office2003がインストールされていて
COM参照にMicrosoft Excel 11.0 Object Libraryを
利用していたのですが
Surfaceで開発環境完全移行を先日行い
Surfaceからアプリの発行を行ったところ
自動的にMicrosoft Excel 16.0 Object Libraryに変更されていました。

 

Office2003持ってない・・・

もちろんOffice2003をインストールなんて
面倒なことはせずに
Google先生に聞いたところ

ExcelをCOMを自力で用意する - 悲喜交々 -へたれの技術メモ置き場-
のである。ぶっちゃけ素直にエクセル使えといいたいが、セル機能実装を考えるとありがたい ものごっつ基礎からいくまずは、プロジェクトの参照設定にExcelのcomを追加する ここで開発機にExcelがないとcom一覧には(当然)Excelは表示...


こちらのページが見つかりました
このページの内容に従い
XPのCOMをダウンロードし
見事Microsoft.Interop.Excelをゲット!

2021-06-03 追記

どうやらリンク先のリンク先(マイクロソフトのダウンロードページ)がなくなっている様子。
ちょっとだけ調べてみたがダウンロードサイトが見つけられなかった。

ものは試しで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参照が変わってたなんて
開発環境の移行はもう少し
慎重にやらなきゃだめですね

超オススメ キーボード

コメント

タイトルとURLをコピーしました