マクロを使って画像を貼り付けする方法

このQ&Aのポイント
  • VLOOKUPで画像を貼り付けしようと検索してましたが、マクロで設定したほうがいいとわかりました。
  • 同じフォルダー内に画像を貼り付けしたいエクセルと画像フォルダーを一緒に置きます。
  • エクセルの指定した場所に一気に画像フォルダーから貼り付けする方法や、VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付けする方法があります。
回答を見る
  • ベストアンサー

マクロを使って画像を貼り付け

VLOOKUPで画像を貼り付けしようと検索してましたが 自分のやりたいことをしようとすると、どうもマクロで設定したほうが いいとわかりましたが、なかなか自分のイメージに近い参考URLがなく ここに質問します。 まず、自分のやりたいイメージですが・・・ 同じフォルダー内に画像を貼り付けしたいエクセルと画像フォルダーを一緒に置きます。 候補(1)エクセルの指定した場所に(9か所)一気に画像フォルダーから貼り付け。 候補(2)VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付け。 上記のことが可能でしょうか? もしくは、近い操作ができるのでしょうか? 以上、わかるかたのご教授お願いします。 尚、上から目線の回答はやめてもらいたいです。

質問者が選んだベストアンサー

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

だいたいこんな具合ですね。 手順: シート名タブを右クリックしてコードの表示を選ぶ 既存のコードを必ず全て消去する 下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range)  dim myPath as string  dim myFile as string  dim i as long  dim a as variant ’準備  if target.count > 1 then exit sub  if application.intersect(target, range("Y1:Y9")) is nothing then exit sub  if target = "" then exit sub  if not isnumeric(target) then exit sub  mypath = thisworkbook.path & "\"  a = array("C7","I7","O7","C25","I25","O25","C43","I43","O43") ’画像の拾い上げ  myfile = dir(mypath & "*.jpg")  for i = 2 to target   myfile = dir()   if myfile = "" then    msgbox "OUT OF RANGE"    exit sub   end if  next i ’画像の表示  on error resume next  activesheet.shapes("myPict_" & target.address).delete  on error goto 0  with activesheet.pictures.insert(mypath & myfile)   .top = range(a(target.row-1)).top   .left = range(a(target.row-1)).left   .name = "myPict_" & target.address  end with end sub Y1からY9に数字を記入する。

ironpriest
質問者

お礼

keithin様。 大変助かりました(T_T) イメージ通りで本当に助かりました! いろいろご丁寧にありがとうございました。

その他の回答 (4)

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

ん? お願いしますから,ヒトの説明をちゃんと聞いてくださいね? 再掲: >丸投げでマクロを作って欲しい時は,こんな具合の説明が必要です: >指定のC12セルに数字を記入すると,指定のE12セルに画像を貼り付ける。 と,こういう具合に情報が必要ですとお話ししてますよね。 追加ご質問: >E12に貼り付けるのを指定したセルに飼える場合はどこの記述を変更すればいいかわかりません どこのセルに変えたいのですか? どうしたいのですか? ご自分でマクロを修正できない事が判明したのですから,せめて回答者の投げかけには答えるようにしてください。 9パターンも一緒です。どこに数字を記入し,どこに画像を貼りたいのですか? あんまり無茶な要求が後出しで出てくるご相談も少なくありません。マクロを最初からまた作り直さなきゃならないような二度手間三度手間になることも,「非常に多く」見かけます。 >教えて頂いた記述を9パターン書き込めば大丈夫でしょうか? これはまぁ今は判らなくても全然構いません(もちろん怒ったりとかしませんよ)けど,それじゃ全く全然ダメです。 たとえばこんな具合にします。 変更前:C12セルに数字を記入する if application.intersect(target, range("C12")) is nothing then exit sub 変更後:C12,C24,C36…セルに記入する if application.intersect(target, range("C12,C24,C36,C48,C60,C72,C84,C96")) is nothing then exit sub #あんまり言いたくありませんが,やさしく教えろと要求するのはまぁかまいません(やさしくおつきあいしてくださる回答者さんもいます)けど,せめてそれなりにキチンとコミュニケーションをしてくださいね?

ironpriest
質問者

補足

keithin様。 いろいろ申し訳ございません。 こちらの言葉足らずを知識不足でご迷惑をおかけしております。 数字を入力するセルはY1~Y9 写真を貼るセルはC7,I7,O7,C25,I25,O25,C43,I43,O43 数字を入力して写真を貼る順番は下記になります。 Y1→C7,Y2→I7,Y3→O7,Y4→C25,Y5→I25,Y6→O25,Y7→C43,Y8→I43,Y9→O43 以上になります。 申し訳ございませんが宜しくお願いします。

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

ふむ。。まぁ,マクロを使うならどうと言うことのない作業なのは確かですね。 ただ,マクロを使いたいなら「一体何をしたいのか」もっとキチンと説明が必要なんですが,だいぶ不十分なご相談です。 勿論,教わった内容を元にご自分でやりたいように応用できれば全然OKなんですけどね。 >VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付け。 丸投げでマクロを作って欲しい時は,こんな具合の説明が必要です:  指定のC12セルに数字を記入すると,指定のE12セルに画像を貼り付ける。 準備: ブックを画像のフォルダに保存する ブックを開く シートを開く シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim myPath as string  dim myFile as string  dim i as long ’準備  if target.count > 1 then exit sub  if application.intersect(target, range("C12")) is nothing then exit sub  if target = "" then exit sub  if not isnumeric(target) then exit sub  mypath = thisworkbook.path & "\" ’画像の拾い上げ  myfile = dir(mypath & "*.jpg")  for i = 2 to target   myfile = dir()   if myfile = "" then    msgbox "OUT OF RANGE"    exit sub   end if  next i ’画像の表示  on error resume next  activesheet.shapes("myPict_" & target.address).delete  on error goto 0  with activesheet.pictures.insert(mypath & myfile)   .top = target.offset(0,2).top   .left = target.offset(0,2).left   .name = "myPict_" & target.address  end with end sub ファイルメニューから終了してエクセルに戻る 指定のC12セルに数字を記入すると,E12セルに画像を表示する。

ironpriest
質問者

補足

keithin様。 教えて頂いた記述を試してみましたが自分のイメージにほほピッタリです。 C12に画像ファイルの番号を入力するのを変更する場所はわかったのですが E12に貼り付けるのを指定したセルに飼える場合はどこの記述を変更すればいいかわかりません。 お手数ですが教えて頂けると助かります。 シートに9枚の画像を貼り付けたいのでその場合は教えて頂いた記述を9パターン書き込めば大丈夫でしょうか?

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.2

こんにちは。  >セルに貼り付けるときですが場所を指定できればと思っております。  9個の画像を別々に場所指定するのですか?  それとも1個の画像の場所を指定したら残り8個は自動的に位置が決まるのでしょうか。  後者であれば、私のマクロと似ています。私のマクロはアクティブセルの位置を基準に1個目の画像を貼り、2個目以降は一つ右のセルに貼っています。  参考になるか分かりませんが、リストの一部を貼っておきます。 では。 --------------------------------------------- 'フォルダ・パス(Dname)の切り出し Dname = Fname.lpstrFile stat = Len("C:\") + 1 While stat > 0 stat = InStr(stat + 1, Dname, "\") 'MsgBox "Dname:" & Left(Dname, stat) & "; stat:" & CStr(stat) If stat <> 0 Then Old_stat = stat End If Wend 'MsgBox "Dname:" & Dname & "; Old_stat:" & CStr(Old_stat) 'アクティブセルの行、列を調べる C = ActiveCell.Column r = ActiveCell.Row 'MsgBox Str(c) + "列" + Str(r) + "行 F=" + Gname Cells(r + 1, C).Activate 'フォルダ中のファイル名(Gname)取得 Gname = Dir(Left(Dname, Old_stat) & "*." & Mid(Dname, InStr(Old_stat, Dname, ".") + 1, 3)) '画像を挿入する ActiveSheet.Pictures.Insert(Gname).Select 'セル(r,c)をアクティブにする Cells(r, C).Value = Gname C = C + 1 Cells(r + 1, C).Activate While Not Gname = "" Gname = Dir() If Gname <> "" Then '画像を挿入する ActiveSheet.Pictures.Insert(Gname).Select 'Row = ActiveSheetActiveSheet.ActiveCell.Row 'ActiveSheet.ActiveCell.Row.Count = Row + 1 'MsgBox "アクティブセルは" + Str(c) + "列" + Str(r) + "行" 'あるセルをアクティブセルにするには、activateメソッドを使います。 'If r <= 5 Then ' MsgBox Str(c) + "列" + Str(r) + "行 F=" + Gname 'End If 'セル(c,r)をアクティブにする Cells(r, C).Value = Gname C = C + 1 Cells(r + 1, C).Activate End If Wend

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  私はExcelで画像一覧を作成しています。  選択したファイルの入っているフォルダから、その中に入っている全ファイル(拡張子は1種類)を横に(1セルに一枚)貼り付けています。  こういう事をしたいのですか? もう少し具体的なイメージを書いてみてください。

ironpriest
質問者

補足

回答ありがとうございます。 拡張子はjpgで考えております。 セルに貼り付けるときですが場所を指定できればと思っております。

関連するQ&A

  • エクセル関数若しくはマクロについて

    エクセルで A1に数字を打ち込み1なら10 2なら14・・・ といったように変換してくれるようにしたいのですが、 1と打った下のセルを10にするならVLOOKUPを使って出来ると 調べたのですが、 1と打ったセルの所を10と表示させるようにするには どのような関数を使うべきなのでしょうか? もしくはマクロを組まないの出来ないなのでしょうか?

  • エクセルのマクロで

    こんにちは、お願いします。 エクセルに画像の添付でマクロを使用したいのですが、 下記のようなマクロ作成・編集ができるのでしょうか? エクセルの特定のセルに画像のファイル名を入力しマクロを実行すると、他のフォルダにある.jpg画像が指定したセル位置に添付される。 また、添付位置を複数にもできますか? 説明がわかるでしょうか…?^_^; マクロに関して全く無知なのですが、できるものでしたら是非教えてください。 宜しくお願いします。

  • マクロ登録を初めて行いたいのですが 分からないので 教えてください。E

    マクロ登録を初めて行いたいのですが 分からないので 教えてください。Excel 97-2003 です。図面を作成しました。同じような物を7列作ってます。セル=VLOOKUP(INDEX(M26:M66-1,3,1),M26:N66,2)-VLOOKUP(INDEX(M26:M66,3,1),M26:N66,2)  コレをたくさん作ってますが ブック自体をマクロ登録して セルの数式を非表示化したいのです。  枠や線や数式は入力規則を使って 1つのセルに数字1を入力したら 消えるようにしてます。  ただその指定をしなければ 数式が見えます。 非表示にして保護をかければ 出来ますが 保護をかければ 図面の添付や線等の記載を解除しなければ できません。  保護を無くして セルの数式を さわれないようにして 図面も書きたいので マクロ登録をしたいのですが どのようにすれば 良いのでしょうか? マクロ自体 よくwかりませんので 分かりやすく 教えていただければ 幸いです。

  • マクロで画像挿入→エラー「リンクされたイメージを表

    マクロを使って、フォルダ内の画像をエクセルに自動的に貼り付けできるようになりました。 http://okwave.jp/qa/q8357181.html (picopico_7さんありがとうございました。) しかし、出来上がったファイルをメールで他の人に送ると、その人のところではエラーがでて画像が見られません。「リンクされたイメージを表示できません」となります。 ネットで調べたところ、excel2010はリンクをつかって画像を表示するから?ということがわかりました。が、対処方法がわかりません。 どなたか教えて頂けませんでしょうか。 よろしくお願いいたします。 windows7 excel2010

  • Excelのマクロのことでお伺いします。

    Excelのマクロのことでお伺いします。 A134のセルを切り取ってA136に貼り付け A138のセルを切り取ってA138に貼り付け この作業をA300までやり続けたいのですが、どのようにマクロの設定をすればいいでしょうか

  • エクセルのマクロ

    素人なのですみませんが教えてください エクセルのマクロを使用して エクセルを起動して ウィンドウズ内のあるフォルダ内のエクセルファイルをコピーをして違うフォルダに貼り付けをしたいのですが、どのようにマクロを組み込むのか教えてください(マクロの式) (例)エクセル起動後エクセルのマクロにて c\Aフォルダ\aファイル←コピー c\Bフォルダ\aファイル←貼り付け

  • 【マクロ】でセルと同名の画像を表示させる

    こんばんわ。マクロについてお聞きしたいです。よろしくお願いします。 [エクセル] 2003or2007 [内容] セルと同じ名前のついている画像を指定した場所に貼り付け、簡単な画像付きの順位表を作成したいと思っています。 また、画像は特定なフォルダにありエクセルと画像は離れている状態とします。 [詳細] ※A1から下に1位2位・・・と順位通りになっているとします。 セル 名前  画像位置 -------------------------------------------------------- A1  りんご C1~F5に画像 A10  ばなな C10~F15に画像 A20  みかん C20~F25に画像 上から順に 1位 りんご画像 2位 ばなな画像 3位 みかん画像が表示できれば嬉しいのですが。 欲を言えば・・・画像表示サイズも「縦×横」の指定や倍率の指定が できると助かります。 こんなことってできますでしょうか? ご鞭撻よろしくお願い致します。

  • エクセル、アクティブになると画像を貼り付け→セル移動→最小化するマクロ

    画像を定期的にエクセルに保存する作業をしています。 現在手動で別アプリケーションから画像をctrl+c→ エクセルをアクティブに→特定のセルを選択→貼り付け→エクセルウィンドウを最小化 を繰り返しているのでこれを自動化したいのですがVBを数年触ってなかったので作り方を完全に忘れてしまいました。 マクロの記録で最小化やペーストのコードは分かったんですが、「エクセルがアクティブになったら実行」と「一定のセルなら別のセルへ」等の条件の書き方はどんな感じだったでしょうか?

  • マクロの作り方がわかりません

    【大至急】マクロの作成方法教えてください!! 質問追記欄のようなマクロを作成したいのですが、どのようにマクロで作成したらよいのかわかりません。 以下ようにマクロ作成をしたいのです。 また、間違った操作をしたらエラーメッセージが表示されるようにできますか? (1)sheet1のB1からJ53の選択範囲のセルをコピーする。 (2)ドライブ指定先にテキスト貼り付けをする。 (3)テキスト貼り付けしたデータを、(1)のセルJ4に記入されている名前で別名保存する。  ※保存先は、ドライブ指定です。

  • マクロで可能でしょうか??

    初めまして ken2308といいます。 Excelは有る程度、使えるのですが 業務上マクロを覚えることになりました。 マクロに関しては全くのシロウトです。 Excelのマクロで以下のような事をやろうと思っておりますが Excelのマクロでは対応は可能でしょうか?? 【例】 Excelファイルが2つあります。 このファイルの大きさが【50列】×【50行】あり 【列】は飛び飛びで20列ほど非表示にており 【行】は複数のセルを結合して有ります。 このファイルを1つのファイルにしたいのですが Excelのマクロでは対応は可能でしょうか?? 自分としては以下のマクロを作成すればよいと 思っているのですが・・・ (1)列・行ともに非表示⇒表示にする。 (2)結合しているセルを解除戻す。 (3)2つのファイルをコピペする。 (4)貼り付け後、不要な列を削除する。 ※このマクロがうまく行ったら、上記で出来たファイルから  ピボットテーブルを作成するつもりです。

専門家に質問してみよう