Windows8・VB.NET(Visual Basic 2010)とOffice2013がインストールされているPCで質問です。この環境でサムネイル含むListViewの内容をExcelオートメーションクライアント/Excel.ShapesのAddPicture等を用いて書き出すプログラムを作ったのですが、完成したプログラムをOffice2007/2010がインストールされている別のPCでも実行できるようにする方法を教えてください。

作成したプログラムは、最初に参照でMicrosoft Excel 15.0 Object LibraryとかMicrosoft Office 15.0 Object Libraryを指定したせいか、別のPC(旧Officeがインストールされている)で実行するとfilenotexceptionが発生して動作しないのが現状です。
現在のコードは破棄してEPPlus( http://epplus.codeplex.com/ )やNPOI( http://npoi.codeplex.com/ )で動作するよう組みなおさないといけないのか迷っています。
よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/07/26 10:55:39
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント500pt

オートメーションの事前バインディングの制約により、
新しいバージョンのOfficeが入った環境でビルドした場合、
古いバージョンのOfficeが入った環境で動作させることは出来ません。

対応案としては、

  • 遅延バインディング(実行時バインディング)のコードに書き直す
  • 古いOfficeが入った開発環境でビルドする

の2通りかと思います。

■ 全ては時の中に… : 【VB.NET】Officeのバージョンに極力依存しないコードの作成
http://blog.livedoor.jp/akf0/archives/51300168.html
■ VB2005 Excel操作 (遅延バインディングを使う方法): T_Nary ブログ
http://nary.cocolog-nifty.com/blog/2009/11/vb2005-excel-2c.html

以下は参考情報です。

■ Visual Basic .NET による Office オートメーション サーバーでのバインディング
http://support.microsoft.com/kb/304661/ja

他3件のコメントを見る
id:cx20

エラーが出るのは、やはり、参照設定が残っている為と思われます。

以下の何れかのツールを用いて「Microsoft.Office.Interop.Excel」が設定されていないことを確認してみてください。
設定されている場合、参照設定がまだ残っていると思われます。
・ildasm(http://msdn.microsoft.com/ja-jp/library/f7dy01k1.aspx
・ILSpy(http://ilspy.net/

2013/07/26 00:04:00
id:halohalolin

cx20さん、根気強く付き合ってくださりありがとうございました。

自分はと言いますと、申し訳ないのですが心が折れてしまったので、結局EPPlusで組みなおしました。

Excel2003フォーマットに対応していないのは残念ですが、Excelオートメーションクライアントと比較して、きちんと計測はしていませんけど数倍処理が早い印象でビックリしました。
また別の機会がありましたら、よろしくお願いいたします。

2013/07/26 10:55:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません