- 締切済み
エクセルでマクロを使って画像を貼り付ける
エクセルで画像を扱うことになり、関数では行き詰ってしまったので質問です。 過去に同じような質問をされているのをみつけましたが、VBAの知識がないために 自分に必要な改良ができませんでした。 やりたいことは、次の通りです。 1.セルE10に"P"の文字が入っていたら、処理はしない。 2.セルG10の文字列と同じファイル名のpngの画像を、K10に張り付ける。 3.E列(またはG列)が空白になったら、終了 画像ファイルは、エクセルファイルが保存されているフォルダに、画像というフォルダを作って、 その中に保存したいです。(フォルダ名は、英字でも構いません。) G列は名前なので、現状は氏と名の間に空白が入っています。 画像データのファイル名にも同じように空白を入れてありますが、空白があっても大丈夫でしょうか。 初めての質問なので、失礼があるかもしれませんが、宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
データは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 貼り付ける画像のサイズ調整とかご相談に書かれてない事は、応用して適切に修正してください。
補足
早々のご回答ありがとうございます! 実行してみましたところ、 実行時エラー’1004:’ Picture クラスのInsert プロパティを取得できません。 というエラーが出てしまいました。 何が悪いのかわからないので、十分な補足ができません。。。申し訳ありません。 考えられることをご教授いただけないでしょうか。 別件ですが、 > データは10行目以下不定数ある そのとおりです。 > E列がPやG列が空の時はスキップ E列は、実際は"A"や"111"、"P1"、"P1-1"といった文字が入っていて、 先頭に"P"がついている行は、対応する画像が存在しないので、スキップしたいと思っています。 対応する画像がなくても問題ないのであれば、この処理は追加しなくても大丈夫です。 > G列の最後の行まで行う G列が空白になった時点で終了で結構です。 > G列の名前.pngの画像を画像フォルダの中から拾ってK列のセルの中に貼り付ける 保存されている画像のサイズは変更したくないので、調整は必要ありません。 セルの真ん中に表示できれば、なお良いです。 どうぞ宜しくお願いします。