• 締切済み

セルに記述したファイル名の画像を自動的に挿入する

エクセルでデータベースを作成しております。 指定したデータを「VLOOKUP」などを使って、別のエクセルファイルに書き出そうと思っています。その際に、データをあらわす別の画像ファイル(jpg)を自動的に取り込んでくることはできるのでしょうか? 説明が下手で済みませんが、具体的には以下のとおりです セルA1に「IMG001」と入力すれば、セルA2に特定のフォルダにある「IMG001.jpg」という画像を自動で貼り付けてくれるようにしたいのです。同じようにセルB1入力したものがB2に、セルC1が・・・・といった具合です。 データの量が多いもので、少しでも手間を省きたいのです。 よろしくご教示ください。

みんなの回答

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

マクロを作ってみました。 1行目をクリックすると、あらかじめ登録してあるフォルダの中に在るjpgファイルがリストアップされますので、そこから画像を選択すると、下の行に画像が自動的に貼り付けられます。 また、既に入力した行の書き換えや消去にも対応しています。(選択しなおせば絵も変更し、消去すれば絵も消去されます) (2行目に落書きをしてしまいます(貼り付けた画像のオブジェクト名)が、貼り付けた画像により隠れるので、特に問題は無いとは思います。 よろしければご利用ください。なお今回は、画像を保存してあるフォルダはめったに変更しないものとして作成しました。 変更する際は、下のコードの 'ここからを必要に応じて変更してください-------------   画像保存パス = "C:" 'ここまでを必要に応じて変更してください------------- の""の中を書き換えてください。 'ここから-------------------------------------------------------------------- Public 画像保存パス As String Private Sub Worksheet_Change(ByVal Target As Range)   Application.EnableEvents = False   On Error GoTo ERREND   If Target.Row = 1 Then     If Target.Value = Empty Then       Pictures(Target.Offset(1, 0).Value).Delete       Target.Offset(1, 0).Delete       GoTo ERREND     End If     If Target.Offset(1, 0).Value <> Empty Then       Pictures(Target.Offset(1, 0).Value).Delete     End If     Target.Offset(1, 0).Activate     Pictures.Insert(画像保存パス & "\" & Target.Value & ".jpg").Select     Target.Offset(1, 0).Value = Selection.Name     Target.Validation.Delete   End If ERREND:   Application.EnableEvents = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'ここからを必要に応じて変更してください-------------   画像保存パス = "C:" 'ここまでを必要に応じて変更してください-------------      Dim FILLIST, FINDNAM As String   If Target.Row = 1 Then     FINDNAM = Dir(画像保存パス & "\*.jpg")     Do Until FINDNAM = Empty       FILLIST = FILLIST & "," & Left(FINDNAM, Len(FINDNAM) - 4)       FINDNAM = Dir     Loop     If FILLIST = 0 Then Exit Sub     FILLIST = Right(FILLIST, Len(FILLIST) - 1)     Target.Validation.Delete     Target.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=FILLIST   End If End Sub 'ここまで-------------------------------------------------------------------- 上記コードの貼り付け方が分からない場合は、以下を参照してください。 Excel2000以降 1) 上記の操作をしたいシートのタブを右クリックし、「コードの表示(V)」をクリック 2) 表示されたMicrosoft Visual Basicウィンドウの右側の白い部分に貼り付ける 3) Microsoft Visual Basicウィンドウを閉じる Excel97以前 1) Alt+F11でMicrosoft Visual Basicウィンドウを表示させる。 2) 左側の「プロジェクト」とかかれた部分から、上記の操作をしたいシート名を探し、ダブルクリック 3) 右側の白い部分に貼り付ける 4) Microsoft Visual Basicウィンドウを閉じる

goo-g-boo
質問者

お礼

ありがとうございました。 しかし、勉強不足でまだ活用できておりません。 がんばってみます。

全文を見る
すると、全ての回答が全文表示されます。
  • thetaII
  • ベストアンサー率25% (7/27)
回答No.1

VBAを使えば可能です。 たとえばセルA1にフルパスで参照したい画像のファイル名を入れておき、適当なボタンに ・・・ Range("A2").Select ActiveSheet.Pictures.Insert(Cells(1, 1)).Select ・・・ と記述してやり、ボタンを押せば、"A1"で指定したファイルが"A2"の位置に表示されます。 これを応用して、セルに入っているファイルを順にシート上に表示していくことはfor...nextやLoopを利用すれば簡単に実現すると思いますが。

goo-g-boo
質問者

お礼

早速やってみました。 for...next、LOOP は活用できなかったのですが、挿入の数だけ上記ボタンを作成して代用しています。これから勉強します。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで画像の自動挿入は可能でしょうか?

    エクセルのVLOOKUPで画像を数式で自動挿入は可能でしょうか? 例えば A1のセルに品番111を入力して A2にC:\Users\X\Desktop\画像\A\111.jpgの画像を自動的に挿入する事は可能でしょうか? もし可能ならばどの様な数式になりますでしょうか? 宜しくお願いします

  • ファイルのパスを参照してセルに画像を表示できますか?

    質問をお願い致します. 以下のような感じで,B列のセルに画像ファイルのパス名を入力しています.このとき,左側のA列のセルに,その画像を表示したいのですが,このようなことは可能でしょうか?     A        B 1 (右の画像) c:\img\pic001.jpg 2 (右の画像) c:\img\pic002.jpg 3 (右の画像) c:\img\pic003.jpg 宜しくお願い致します.

  • 記載しているファイル名より、画像を抽出したい

    エクセルシートに記載している画像ファイルを、別のフォルダから抽出 する方法を教えてください 今、エクセルシートの A列の1行から1000行に画像のファイル名が記載されています これをtest.xlsxとします ここにはa列に下記のように記載されています ------------------------------------------- a1セルに0000a1.jpg a2セルに0000a2.jpg a3セルにxyz.jpg a4セルにopq.jpg ・ ・ ・ a1000セルにopqrst.jpg ---------------------------------------------- このようなものです そして、別の(例えばgazo)フォルダに、a1~a1000の画像を含んだ、 それ以外の画像も入っているgazouフォルダがあります これを別のフォルダー(gazou_newフォルダー)に 先のエクセルファイルa1~a1000に記載されている 画像を取り込みたいのですが・・・・ どのようにしたらよいでしょうか

  • ファイル名を書くことによるファイル内の数値の呼び出しを教えてください。

     あるエクセルファイル名をセルに書くことでその中のデータを呼び出したいと思ってVLOOKUPを使ってみたのですが…  セルB1にaaa.xlsと書いて =VLOOKUP(a,[=B1.xls]c!,$A$1:$F$50,1)と書くとファイルが見つかりませんといわれます。ファイル名を書くことでその中のデータを呼び出すことは可能でしょうか?  すいません全然分かってないので質問もよく分からないのですがなんとか大量のエクセルファイルをまとめたいです。宜しくお願い致します。

  • 複数の画像をVBAでエクセルに貼り付ける方法

    VBA初心者です。 多数のJPG画像が指定のフォルダ内に保存してあります。 JPG画像には、img_001.jpg、img_002.jpg・・・というように連番の名前が記載されています。 EXCELファイルのA列のセルに入力されているランダムな数値に対応した画像が 同じ行のB列に表示するようにしたいと考えています。 (たとえば、A1のセルに1を入力したら、B1のセルにimg_001.jpgが表示される) このような操作を、VBAを使用して作成することはできるのでしょうか。

  • エクセル2007 画像挿入

    B9のセルに品番を入力するとA9のセルに画像が自動挿入(画像サイズはA9に入るようにしたい )される様にしたいのですが、可能でしょうか? 画像はデスクトップにある画像フォルダを使いたいのですが・・・ 又、B9以外にもB10 B11 B12 B13・・・と下のセルにも同じように品番を入力すると自動で画像挿入したいです。 どなたか分かる方宜しくお願いします。

  • エクセルの関数で、セルに書いたファイル名を参照

    エクセルの関数で、セルに書いたファイル名を参照する方法が知りたいです。 エクセル関数初心者レベルです。 別のファイル(開いた状態)に欲しいデータがあって、そのデータをexcel関数(できればOFFSET関数等)を使って他のファイルで参照します。 その際、その関数に記載されるファイル名を別のセルに記入して、それを参照させるようにしたいのですが、どうすればよいのでしょう。 たとえば、afile.xlsというファイルのbsheetというシートのA1セルに欲しいデータ(数字または文字)があるとします。 afile.xlsを開いた状態で、別のファイル(new.xlsとします)のセルに、"="で参照させると =[afile.xls]bsheet!$A$1 という関数が入り、データも表示されています。 ここで、たとえばnew.xls上の B2セルに " afile.xls " とベタ打ちして、 上掲の=[afile.xls]bsheet!$A$1の [afile.xls] のところをB2セルを参照させるようにしたいです。単純にB2と打ち変えてみたりもしたのですが、うまくいかないようで。 どなたか教えて頂けるとたすかります。よろしくお願いいたします。

  • 別ファイルを参照しながらシート名を動的に

    Excelにて、VLOOKUP関数を使用し別ファイルを参照してます。 (こちらをAファイルとします) 別ファイル(こちらをBファイルとします)にはいくつかシートがあり、Aファイルに入力された値によって、Bファイルを参照するシートを変更したいのですが、うまくいきません。 AファイルはC:\workに BファイルはC:\work\workにそれぞれ配置してあります。 AファイルのセルA1には任意の値を入力可能で、その値によって参照するBファイルのシートを変更できます。 VLOOKUP(B1,INDIRECT("'C:\work\work\[Bファイル.xls]"&A1&"シート'!$A$1:$B$100") Aファイルに上記のような関数を書いても、#REFと表示されてしまいます。 どこがおかしいのでしょうか? #AファイルとBファイルを同時に開いている状態だとうまく表示されました。

  • CSVのセルの内容と、画像のファイル名を同一のものにするには?

    現在、CSVファイルのAの列に、 100x 101x 102x というように、商品番号が並んでいます。 そして、この商品番号と同じ画像ファイルが、 100x_01.jpg 100x_02.jpg 101x_01.jpg 101x_02.jpg というように別フォルダにあるのですが、CSVの方の商品番号を現在のものから変更した際、画像ファイルの方も同じように変更しなければなりません。 これを手作業ではなく、自動、もしくは半自動で行える方法はないでしょうか? ご存じの方いらっしゃいましたら、ご教授お願いいたします。

  • セルの自動塗りつぶし

    エクセルで作った日報のようなものの中に詳細として、 例えば10/1の9:00から12:00はAの業務、13:00-18:00まではBの業務などの内訳が入っています。 コレを元に、別のエクセルに、たてに日付、横に1時間ごとの時間が入っていて、そこへ自動的に 先のエクセルに入っている内訳の業務別に塗りつぶせるような方法をさがしています。 特にエクセルにはこだわっていません(ただ、既にエクセルで作っちゃっているので、それを上手く使えれば言うことないのですが、)。そういうフリーソフトがあればそれでも構いません。 例えば10/1の9:00から12:00はAの業務なのでクロスする部分のセル3個が緑になり、 13:00-18:00まではBの業務なので5個のセルが青になる、等です。 条件付書式で入力しようとも思ったのですが、あまりにも作業量が多くなってしまうので もっと作業を簡単にしたいと思いました。 わかりずらくて申し訳ありませんが、知恵をお貸しいただければ幸いです。

このQ&Aのポイント
  • 昨日の14時過ぎに接種しました。今まで色んなワクチンを接種しましたが、一度も副反応と呼べる症状が出た事はありません。
  • ワクチンは4回目のオミクロン株対応(ファイザー社)のものです。症状としては熱っぽさを感じています。午前一時頃に寝たのですが、その時に打った左肩の部分に痛みがありました。今、少しだけ痛みはありますが、我慢出来ないレベルではありません。
  • 個人個人で色々だと言われると、そうですかと割り切らないといけないですね。唯、取り敢えず今後の展望と言いますか、如何いう風になるのか?またこんな事に注意しないといけない的なアドバイスを頂けたら有難いです。なるべく医療関係の職業の人からの回答をお待ちしております。
回答を見る

専門家に質問してみよう