- - PR -
Excelに画像ファイルを貼り付ける方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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(); の引数は何を意味しているのでしょうか。 宜しくお願いします。 | ||||
|
投稿日時: 2008-06-23 21:35
1 つでしかないモノを無理矢理 「複数系」 のものにキャストしているので例外が発生します... と思ったのですが、引数が 0 なのがそもそも問題のような... 1 の間違いではないかと思います。 Pictures メソッドの引数は '複数の Picture のうちのどの Index に当てはまる Picture を返すか' を示すものです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 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は参照設定で追加しているのですが、それ以外に何か必要な設定が あるのでしょうか? 宜しくお願いします。 | ||||
|
投稿日時: 2008-06-24 12:01
それだけが原因ではありません。 もう一度書かせて頂きますが、1 つでしかないモノを無理矢理 「複数系」 のものにキャストしているので例外が発生します。 例外情報にもキャストできないと書いてありますよね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 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); | ||||
|
投稿日時: 2008-06-24 14:18
参考にしている元PGには、Pictures(1)と書いていないのに、貴方のPGにはなぜ(1)がついているのですか?
| ||||
|
投稿日時: 2008-06-24 14:24
スレ主さんは、下記を見ているのかな。
Excelへの画像の挿入について 役に立つ時がきたようですねwww スレ主さんは、C# への変換で困っているようですが・・・
| ||||
|
投稿日時: 2008-06-24 14:36
みなさんコメントありがとう御座います。
にもかかわらず理解できず、へこみ中ですorz ◆まるくさん C#で記述すると引数を求められ、ビルドエラーとなってしまう為です。 ◆ひろれいさん めちゃめちゃ当サイトにはお世話になっているので参考PGというのは まさにリンク張って頂いたじゃんぬねっとさんの記述です。 今じゃんぬさんのサイトで「COMオブジェクトの参照カウントを開放する」とかを 読んでました。。。うぅ |