- PR -

Excelに画像ファイルを貼り付ける方法

投稿者投稿内容
Liquid_Force
大ベテラン
会議室デビュー日: 2003/08/28
投稿数: 102
投稿日時: 2008-06-23 21:16
こんばんは。

Excelにtifファイルを貼り付ける処理を記述していてエラーになって
困っているのでどなたか教えてください。
過去ログなどでみなさんコメントを参考にしているのですが、VBコードをC#で
記述しようとすると、なかなか上手くいきません。

今回は以下の箇所でエラーとなってしまします。

====================================================================
Excel.Picture picture;
Excel.Pictures pictures;

ここ→ pictures = (Excel.Pictures)workSheet.Pictures(0);
picture = pictures.Insert(TiffFilePath, Missing.Value);

picture.Left = 0;
picture.Top = 500;

excelWorkBook.Save();
excelWorkBook.Close(Missing.Value, Missing.Value, Missing.Value);
excelApplication.Quit();
====================================================================

MSDNを読んでもいまいちよくわかりませんでした。
pictures = (Excel.Pictures)workSheet.Pictures(0);
「HRESULT からの例外: 0x800A03EC」というエラーです。
〜.Pictures(); の引数は何を意味しているのでしょうか。
宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-06-23 21:35
引用:

Liquid_Forceさんの書き込み (2008-06-23 21:16) より:

ここ→ pictures = (Excel.Pictures)workSheet.Pictures(0);


1 つでしかないモノを無理矢理 「複数系」 のものにキャストしているので例外が発生します... と思ったのですが、引数が 0 なのがそもそも問題のような... 1 の間違いではないかと思います。

Pictures メソッドの引数は '複数の Picture のうちのどの Index に当てはまる Picture を返すか' を示すものです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Liquid_Force
大ベテラン
会議室デビュー日: 2003/08/28
投稿数: 102
投稿日時: 2008-06-24 11:52
こんにちわ。
じゃんぬねっとさん、回答ありがとうございます。

いまだによく理解できてないのですが、パラメータを0→1へ変更しても
エラーとなってしまいます。

「System.InvalidCastException
 型 'System.__ComObject' の COM オブジェクトを
 インターフェイス型 'Microsoft.Office.Interop.Excel.Pictures' に
 キャストできません。
 IID '{000208A7-0000-0000-C000-000000000046}' が指定された
 インターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに
 次のエラーが発生したため、この操作に失敗しました:
 インターフェイスがサポートされていません (HRESULT からの例外: 0x80004002(E_NOINTERFACE))」

ExcelのDLLは参照設定で追加しているのですが、それ以外に何か必要な設定が
あるのでしょうか?
宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-06-24 12:01
引用:

Liquid_Forceさんの書き込み (2008-06-24 11:52) より:

いまだによく理解できてないのですが、パラメータを0→1へ変更しても
エラーとなってしまいます。


それだけが原因ではありません。

もう一度書かせて頂きますが、1 つでしかないモノを無理矢理 「複数系」 のものにキャストしているので例外が発生します。 例外情報にもキャストできないと書いてありますよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Liquid_Force
大ベテラン
会議室デビュー日: 2003/08/28
投稿数: 102
投稿日時: 2008-06-24 14:10
すみません、何度も。
1つしかないものを複数系にキャストしてるというのは
Worksheetオブジェクトが1つで、Excel.picturesが複数ということでしょうか。

Insertメソッドはpictures(複数系?)にしかないみたいなのですが、
どうやって使用したらよいかわかないのでご指導お願いします。

【VB.NET】参考PG
xlPictures = DirectCast(xlWorksheet.Pictures, Excel.Pictures)
【C#.NET】小職PG
pictures = (Excel.pictures)workSheet.pictures(1);
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2008-06-24 14:18
参考にしている元PGには、Pictures(1)と書いていないのに、貴方のPGにはなぜ(1)がついているのですか?

引用:

【VB.NET】参考PG
xlPictures = DirectCast(xlWorksheet.Pictures, Excel.Pictures)
【C#.NET】小職PG
pictures = (Excel.pictures)workSheet.pictures(1);

ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-06-24 14:24
スレ主さんは、下記を見ているのかな。

  Excelへの画像の挿入について

役に立つ時がきたようですねwww
スレ主さんは、C# への変換で困っているようですが・・・

引用:

Liquid_Forceさんの書き込み (2008-06-24 14:10) より:

すみません、何度も。
1つしかないものを複数系にキャストしてるというのは
Worksheetオブジェクトが1つで、Excel.picturesが複数ということでしょうか。

Insertメソッドはpictures(複数系?)にしかないみたいなのですが、
どうやって使用したらよいかわかないのでご指導お願いします。

【VB.NET】参考PG
xlPictures = DirectCast(xlWorksheet.Pictures, Excel.Pictures)
【C#.NET】小職PG
pictures = (Excel.pictures)workSheet.pictures(1);


Liquid_Force
大ベテラン
会議室デビュー日: 2003/08/28
投稿数: 102
投稿日時: 2008-06-24 14:36
みなさんコメントありがとう御座います。

にもかかわらず理解できず、へこみ中ですorz
◆まるくさん
C#で記述すると引数を求められ、ビルドエラーとなってしまう為です。

◆ひろれいさん
めちゃめちゃ当サイトにはお世話になっているので参考PGというのは
まさにリンク張って頂いたじゃんぬねっとさんの記述です。

今じゃんぬさんのサイトで「COMオブジェクトの参照カウントを開放する」とかを
読んでました。。。うぅ

スキルアップ/キャリアアップ(JOB@IT)