Visual Studio C# エクセルに画像を貼り付ける

生産管理システム構築の際に、製品に貼る銘版シールを自前のシステムから、エクセルシートを作成して、特別な装置が無くても工場で銘版シールが作成できるようにしたい。

前提として
Visual Studio 2010
Excel 2003
を使用する。

幾つかの方法があったので試してみた。

1.Worksheet.Shapes を使う方法
 ちょっと難しかったのか、ぜんぜんです。
 オプションパラメータもうまく参照できませんでした。
 エクセル2003じゃー、だめってことかと思います。
 mso なんちゃらって、いう、パナメータ。Enumっぽいのですが、参照できませんでした。とっとあきらめました。

2.クリップボードに一旦画像をコピーしてから貼り付ける
結果、この方法で成功したのですが、ちょっと難儀したので、書き残します。

2.1 Range.PasteSpecial を使う方法
クリップボードにイメージデータをコピーするサンプルコードとしては
    System.Windows.Forms.Clipboard.Clear();
    System.Windows.Forms.Clipboard.SetImage(バーコード[ImagIdx]);

こんな感じでOKでした。
次に、Range.PasteSpecia() を実行してみたのですが、エラー。
パラメータも幾つか試したのですが、エラーを重ねるばかりで、正解がわかりませんでした。
あまりにも、答えが見つからないので、軽く日本酒をグビーっとあおってみたのですが、状況は打開できませんでした。
こういうときは、一晩寝て、翌朝に神社に行って祝詞をあげて、禊をすると解決するのです。(冗談です)

2.2 Picturesを使う
プログラムでクリップボードにコピーされた後、あらかじめ立ち上げておいたエクセルシートで「貼り付け」をすると、ちゃんと貼り付けることでできていたので、答えは必ずあると考えておりました。

成功したバターンは、
コピー先のRangeを選択してから、Pictures.Pasteを実行する。
サンプルコードとしては
 Range.Select();
   Pictures pictures = (Pictures)Worksheet.Pictures(Type.Missing);
   Picture picture = pictures.Paste(Type.Missing);

こんな感じです。これでOK牧場でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です