マクロを使って画像を貼り付けする方法
- VLOOKUPで画像を貼り付けしようと検索してましたが、マクロで設定したほうがいいとわかりました。
- 同じフォルダー内に画像を貼り付けしたいエクセルと画像フォルダーを一緒に置きます。
- エクセルの指定した場所に一気に画像フォルダーから貼り付けする方法や、VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付けする方法があります。
- ベストアンサー
マクロを使って画像を貼り付け
VLOOKUPで画像を貼り付けしようと検索してましたが 自分のやりたいことをしようとすると、どうもマクロで設定したほうが いいとわかりましたが、なかなか自分のイメージに近い参考URLがなく ここに質問します。 まず、自分のやりたいイメージですが・・・ 同じフォルダー内に画像を貼り付けしたいエクセルと画像フォルダーを一緒に置きます。 候補(1)エクセルの指定した場所に(9か所)一気に画像フォルダーから貼り付け。 候補(2)VLOOKUPみたいに数字を入力したら指定したセルに画像を貼り付け。 上記のことが可能でしょうか? もしくは、近い操作ができるのでしょうか? 以上、わかるかたのご教授お願いします。 尚、上から目線の回答はやめてもらいたいです。
- ironpriest
- お礼率37% (36/97)
- オフィス系ソフト
- 回答数5
- ありがとう数1
- みんなの回答 (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に数字を記入する。
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7940)
ん? お願いしますから,ヒトの説明をちゃんと聞いてくださいね? 再掲: >丸投げでマクロを作って欲しい時は,こんな具合の説明が必要です: >指定の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 #あんまり言いたくありませんが,やさしく教えろと要求するのはまぁかまいません(やさしくおつきあいしてくださる回答者さんもいます)けど,せめてそれなりにキチンとコミュニケーションをしてくださいね?
補足
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)
ふむ。。まぁ,マクロを使うならどうと言うことのない作業なのは確かですね。 ただ,マクロを使いたいなら「一体何をしたいのか」もっとキチンと説明が必要なんですが,だいぶ不十分なご相談です。 勿論,教わった内容を元にご自分でやりたいように応用できれば全然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セルに画像を表示する。
補足
keithin様。 教えて頂いた記述を試してみましたが自分のイメージにほほピッタリです。 C12に画像ファイルの番号を入力するのを変更する場所はわかったのですが E12に貼り付けるのを指定したセルに飼える場合はどこの記述を変更すればいいかわかりません。 お手数ですが教えて頂けると助かります。 シートに9枚の画像を貼り付けたいのでその場合は教えて頂いた記述を9パターン書き込めば大丈夫でしょうか?
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 >セルに貼り付けるときですが場所を指定できればと思っております。 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)
こんにちは。 私はExcelで画像一覧を作成しています。 選択したファイルの入っているフォルダから、その中に入っている全ファイル(拡張子は1種類)を横に(1セルに一枚)貼り付けています。 こういう事をしたいのですか? もう少し具体的なイメージを書いてみてください。
補足
回答ありがとうございます。 拡張子はjpgで考えております。 セルに貼り付けるときですが場所を指定できればと思っております。
関連するQ&A
- エクセル関数若しくはマクロについて
エクセルで A1に数字を打ち込み1なら10 2なら14・・・ といったように変換してくれるようにしたいのですが、 1と打った下のセルを10にするならVLOOKUPを使って出来ると 調べたのですが、 1と打ったセルの所を10と表示させるようにするには どのような関数を使うべきなのでしょうか? もしくはマクロを組まないの出来ないなのでしょうか?
- ベストアンサー
- その他(ITシステム運用・管理)
- マクロ登録を初めて行いたいのですが 分からないので 教えてください。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のマクロのことでお伺いします。
Excelのマクロのことでお伺いします。 A134のセルを切り取ってA136に貼り付け A138のセルを切り取ってA138に貼り付け この作業をA300までやり続けたいのですが、どのようにマクロの設定をすればいいでしょうか
- 締切済み
- その他MS Office製品
- 【マクロ】でセルと同名の画像を表示させる
こんばんわ。マクロについてお聞きしたいです。よろしくお願いします。 [エクセル] 2003or2007 [内容] セルと同じ名前のついている画像を指定した場所に貼り付け、簡単な画像付きの順位表を作成したいと思っています。 また、画像は特定なフォルダにありエクセルと画像は離れている状態とします。 [詳細] ※A1から下に1位2位・・・と順位通りになっているとします。 セル 名前 画像位置 -------------------------------------------------------- A1 りんご C1~F5に画像 A10 ばなな C10~F15に画像 A20 みかん C20~F25に画像 上から順に 1位 りんご画像 2位 ばなな画像 3位 みかん画像が表示できれば嬉しいのですが。 欲を言えば・・・画像表示サイズも「縦×横」の指定や倍率の指定が できると助かります。 こんなことってできますでしょうか? ご鞭撻よろしくお願い致します。
- 締切済み
- その他MS Office製品
- エクセル、アクティブになると画像を貼り付け→セル移動→最小化するマクロ
画像を定期的にエクセルに保存する作業をしています。 現在手動で別アプリケーションから画像を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)貼り付け後、不要な列を削除する。 ※このマクロがうまく行ったら、上記で出来たファイルから ピボットテーブルを作成するつもりです。
- 締切済み
- オフィス系ソフト
お礼
keithin様。 大変助かりました(T_T) イメージ通りで本当に助かりました! いろいろご丁寧にありがとうございました。