C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Excelへの設定エラーについて


(過去ログ 50 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■27151 / inTopicNo.1)  Excelへの設定エラーについて
  
□投稿者/ キツネリス (1回)-(2008/10/29(Wed) 15:49:37)

分類:[C#] 

2008/10/29(Wed) 16:53:44 編集(投稿者)

はじめまして。
今回C#でシステムを作るに当たり、C#のデータをExcelに出力しよう考えています。

http://support.microsoft.com/kb/303872/ja

マイクロソフトのサポートページ通りソースを入力したのですが、
using Office = Microsoft.Office.Core;
using VBIDE = Microsoft.Vbe.Interop;
using Excel = Microsoft.Office.Interop.Excel;
ビルドをすると、上記の箇所に
「名前空間に'office(VBIDE・Excel)'の定義が既に含まれています。」というビルドエラーが出ます。
どうしたら良いでしょうか?

Excelのバージョンは2000

参照設定をしたのは
Microsoft Excel 9.0 Object Library
Microsoft Visual Basic for Applications Extensibility 5.3
になります。

引用返信 編集キー/
■27162 / inTopicNo.2)  Re[1]: Excelへの設定エラーについて
□投稿者/ やじゅ (729回)-(2008/10/29(Wed) 20:34:46)
やじゅ さんの Web サイト
No27151 (キツネリス さん) に返信
> Excelのバージョンは2000
>
> 参照設定をしたのは
> Microsoft Excel 9.0 Object Library
> Microsoft Visual Basic for Applications Extensibility 5.3
> になります。
>

Excelのバージョンは2003、Microsoft Excel 11.0 Object Libraryが
必要なんではないでしょうか

引用返信 編集キー/
■27196 / inTopicNo.3)  Re[2]: Excelへの設定エラーについて
□投稿者/ キツネリス (2回)-(2008/10/30(Thu) 11:02:53)
No27162 (やじゅ さん) に返信

> Excelのバージョンは2003、Microsoft Excel 11.0 Object Libraryが
> 必要なんではないでしょうか

やじゅさん、回答ありがとうございました。
Excel2000のサンプルソースを探して
http://goungoun.dip.jp/app/fswiki/wiki.cgi/devnotebook?page=Visual+Studio+.NET+2003+C%23%A1%A2Excel2000+COM+%C1%E0%BA%EE%A5%AF%A5%E9%A5%B9

こちらのサンプルコードで試してみました。
ビルドではエラーは発生しないのですが、実行すると

「'System.InvalidCastException' のハンドルされていない例外が発生しました。
 追加情報 : インターフェイス Excel._Application の QueryInterface に失敗しました。」

というシステムエラーになってしまいました。
本来ならソース元の管理者の方に問い合わせてみるのが良いのかもしれませんが
スレの関連性から、もし解決策がお分かりのようでしたら
よろしくお願いします。

引用返信 編集キー/
■27205 / inTopicNo.4)  Re[3]: Excelへの設定エラーについて
□投稿者/ やじゅ (733回)-(2008/10/30(Thu) 12:30:31)
やじゅ さんの Web サイト
No27196 (キツネリス さん) に返信
> 「'System.InvalidCastException' のハンドルされていない例外が発生しました。
>  追加情報 : インターフェイス Excel._Application の QueryInterface に失敗しました。」
>
> というシステムエラーになってしまいました。

下記サイトの「Excel との連携に関する Tips」にあるのでも同様なエラーが出るなら
環境の問題もあるかも知れませんね。
http://jeanne.wankuma.com/tips/csharp/excel/addbook.html

C#.NETからExcelを操作するには?
http://vsug.jp/tabid/63/forumid/45/postid/3992/view/topic/Default.aspx
引用返信 編集キー/
■27206 / inTopicNo.5)  Re[3]: Excelへの設定エラーについて
□投稿者/ 魔界の仮面弁士 (884回)-(2008/10/30(Thu) 12:38:05)
2008/10/30(Thu) 13:34:35 編集(投稿者)

No27196 (キツネリス さん) に返信
> 本来ならソース元の管理者の方に問い合わせてみるのが良いのかもしれませんが
元ソースの開発環境に入っていた Excel のバージョンと、
現在開発中の環境内に入っている Excel のバージョンと、
実行予定となるインストール先の Excel のバージョンが、
正しく一致していることを確認してみてください。

Excel のタイプライブラリは、十分なバイナリ互換性を保っていないので、
事前バインディングによる開発だと、バージョンの違いを吸収しきれない事があります。

たとえば同じ名前のメソッドでも、バージョンが上がると引数の数が増やされたり、
戻り値が無い(void)メソッドが、次のバージョンから object を返す場合があったりするため、
それが原因で、コンパイルが通らなくなったり、実行時の動作に影響を与えたりします。
(上位バージョンには、下位バージョン用のインターフェイスも実装されているのですが、完全ではない模様)


> 追加情報 : インターフェイス Excel._Application の QueryInterface に失敗しました。
COM 側での型変換に失敗しているようですね。

ただ、これだけでは何とも言えません。上記に書いたように、環境側(バージョンの違い等)に
問題があるという可能性もありますが、単に、記述したソースコードに問題があるだけかも
知れませんし。もう少し情報が欲しい所です。


-- 追記 --
それともう一つ。.NET Framework 、および Visual Studio の Service Pack も
確認しておいてください。少なくとも .NET 1.1 の頃において、省略可能な引数を持った
 'VBA/VB6 的表現
 Property Get Foo(ByVal a As Long, Optional ByVal b As Long) As Long
 Property Let Foo(ByVal a As Long, Optional ByVal b As Long, ByVal c As Long)
のようなプロパティを持つ ActiveX コンポーネントを参照設定した場合、
Service Pack の有無によって、自動生成されるタイプライブラリの定義が変化してしまい、
 'Service Pack 無しの場合
 Sub set_Foo(ByVal a As Integer, ByVal b As Integer)
 Function get_Foo(ByVal a As Integer) As Integer
および
 'Service Pack 1 適用済みの場合
 Sub set_Foo(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer)
 Sub set_Foo(ByVal a As Integer, ByVal c As Integer)
 Function get_Foo(ByVal a As Integer) As Integer
 Function get_Foo(ByVal a As Integer, ByVal b As Integer) As Integer
になる場合とがあったようです。(人から聞いただけで、私自身は未検証ですが)

Excel の場合、省略可能な引数が多いので、もしかしたら…と。
引用返信 編集キー/
■27222 / inTopicNo.6)  Re[4]: Excelへの設定エラーについて
□投稿者/ キツネリス (3回)-(2008/10/30(Thu) 16:15:20)
やじゅさん、魔界の仮面弁士さん レスどうもありがとうござました。
Excelの再インストールをして解決したケースがありましたので、
僕も再インストールをしたところ、無事Excelと連携をとることができました。

どうもありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -