• 締切済み

エクセルでマクロを使って画像を貼り付ける

エクセルで画像を扱うことになり、関数では行き詰ってしまったので質問です。 過去に同じような質問をされているのをみつけましたが、VBAの知識がないために 自分に必要な改良ができませんでした。 やりたいことは、次の通りです。  1.セルE10に"P"の文字が入っていたら、処理はしない。  2.セルG10の文字列と同じファイル名のpngの画像を、K10に張り付ける。  3.E列(またはG列)が空白になったら、終了 画像ファイルは、エクセルファイルが保存されているフォルダに、画像というフォルダを作って、 その中に保存したいです。(フォルダ名は、英字でも構いません。) G列は名前なので、現状は氏と名の間に空白が入っています。 画像データのファイル名にも同じように空白を入れてありますが、空白があっても大丈夫でしょうか。 初めての質問なので、失礼があるかもしれませんが、宜しくお願いします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

データは10行目以下不定数ある E列がPやG列が空の時はスキップ G列の最後の行まで行う G列の名前.pngの画像を画像フォルダの中から拾ってK列のセルの中に貼り付ける sub macro1()  dim myPath as string  dim myFile as string  dim r as long  mypath = thisworkbook.path & "\画像\"  for r = 10 to range("G65536").end(xlup).row   if cells(r, "E") <> "P" and cells(r, "G") <> "" then    with activesheet.pictures.insert(mypath & cells(r, "G") & ".png")     .shaperange.lockaspectratio = false     .top = cells(r, "K").top     .left = cells(r, "K").left     .width = cells(r, "K").width     .height = cells(r, "K").height     .name = "Pict" & cells(r, "K").address(false, false)    end with   end if  next r end sub 貼り付ける画像のサイズ調整とかご相談に書かれてない事は、応用して適切に修正してください。

gerberaorg
質問者

補足

早々のご回答ありがとうございます! 実行してみましたところ、  実行時エラー’1004:’  Picture クラスのInsert プロパティを取得できません。 というエラーが出てしまいました。 何が悪いのかわからないので、十分な補足ができません。。。申し訳ありません。 考えられることをご教授いただけないでしょうか。 別件ですが、 > データは10行目以下不定数ある  そのとおりです。 > E列がPやG列が空の時はスキップ  E列は、実際は"A"や"111"、"P1"、"P1-1"といった文字が入っていて、  先頭に"P"がついている行は、対応する画像が存在しないので、スキップしたいと思っています。  対応する画像がなくても問題ないのであれば、この処理は追加しなくても大丈夫です。 > G列の最後の行まで行う  G列が空白になった時点で終了で結構です。 > G列の名前.pngの画像を画像フォルダの中から拾ってK列のセルの中に貼り付ける  保存されている画像のサイズは変更したくないので、調整は必要ありません。  セルの真ん中に表示できれば、なお良いです。 どうぞ宜しくお願いします。