Excel VBAでフォルダ内の画像を一覧表示する方法

このQ&Aのポイント
  • ExcelのVBAを使用して、特定のフォルダ内の画像を一覧表示させる方法について教えてください。
  • 過去に似たような質問があり、試したVBAが近い内容でしたが、一つのセルに一つの画像を表示するだけでした。
  • 私はさらに、特定のシートのA列に画像名の一覧があり、それに対応した画像を別の列に表示する方法が知りたいです。
回答を見る
  • ベストアンサー

excelにて。VBAで、フォルダ内の画像を一覧の横に表示させたい。

excelにて。VBAで、フォルダ内の画像を一覧の横に表示させたい。 過去、似たような質問があり、ここに書かれているVBAを試したところ、やりたい事とかなり近かったです。 http://okwave.jp/qa/q2880877.html しかしコレの場合、ある一つのセルへの入力に対して、一つの画像を表示する、といった形になっています。私がやりたいのは、さらに以下のようなことです。 1.あるシートのA列に、画像名の一覧がある。(マックス500行程度) 2.マクロを実行すると、A列と同名の画像が、あるフォルダから呼び出されてB列に表示される。  (A2と同名の画像がB2へ、A3と同名の画像がB3へ、ということ) ※参照フォルダは固定でOKです。 ※表示サイズはサムネイル程度の小さなものでOKです。前述リンク先のVBAのように、任意指定できれば尚可。 前述のリンク先にあるVBAを自分で書き換えられればよいのですが、どうすればセルを可変にできるのかわかりません。(それとも下方向に向けて反復するといった形に書き換えるんですかね??) 当方はVBAできません。ネットで拾ったものをコピペして使っているレベルです。 バージョンは2002です。よろしくお願いいたします。

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

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

ご質問に書かれた >あるシートのA列に、画像名の一覧がある。(マックス500行程度) のようになっていない,たとえばA1やA2などのセルが空欄になっていて画像名が記入されていない状況が想定されます。 変更前: if dir(p & h) <> "" then 変更後: if h <> "" and dir(p & h) <> "" then としてみます。 まだダメだったときは。 どんなデータも一つも通らずダメなのか,特定のセル番地,特定の画像名などでダメなのか,エラーの出る詳しい状況を何でも全て教えてください。 VBE画面でデバッグを行い,エラーが出た時点でhやらpにどんな内容が実際に入っていたのかを確認し,教えてください。 また念のためご利用のエクセルのバージョンについてもきちんと教えてください。 #基本ですがもしも「デバッグとは何ですか,どうしたらいいですか」について,やり方を知らない判らないときは必要に応じて別途ご相談を投稿してみてください。

rock0000
質問者

お礼

ありがとうござました。 まさにそれ、空欄セルがあったからでした。 こちらのマヌケなミスで、お時間おかけして申し訳ありませんでした。 見事に画像が現れて、感動いたしました。 どうもありがとうございました!

その他の回答 (2)

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.3

>当方はVBAできません。ネットで拾ったものをコピペして使っているレベルです。 ってことですから >p = "c:\あるフォルダ\" もそのままのような気がする・・・

rock0000
質問者

補足

わはは。さすがにそれはありません!

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

sub macro1()  dim p as string  dim h as range  p = "c:\あるフォルダ\"  activesheet.pictures.delete  for each h in range("A1:A" & range("A65536").end(xlup).row)   if dir(p & h) <> "" then    with activesheet.pictures.insert(p & h)     .name = h     .top = h.offset(0, 1).top     .left = h.offset(0, 1).left   ’不要なら次の2行をコメントアウト     .width = h.offset(0, 1).width     .height = h.offset(0, 1).height    end with   end if  next end sub など。

rock0000
質問者

補足

早速ありがとうございます。 やってみたところ、マクロを実行するとエラーが出ます。 「With ActiveSheet.Pictures.Insert(p & h)」にデバックの黄色が出ているのですが、何が問題なんでしょうか????

関連するQ&A

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

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

  • Excel VBAで自動的にハイパーリンクを設定する方法について教えて

    Excel VBAで自動的にハイパーリンクを設定する方法について教えてください。 VBAについては、ほとんど初心者なので、どうやって良いのか分かりません。 やりたい作業については、あるExcelのブックに一覧表があり、その一覧表のIDと合致したファイルをハイパーリンクさせたいのです。 一覧表は、 ID    項目  ・・・VBA A-0001  aaaa B-0002  bbbb の様になって、VBA列のセルをアクティブにするとID列のセルに自動でハイパーリンクが設定される。 そして、リンクをさせたいファイル名が"A-0001 aaaa・・・"となっているので 頭の6文字が合致したら、そのファイルを選択してくれるようにしたいです。 説明が下手で申し訳ありませんが、皆様のお知恵をお貸しください。 出来れば・・・ボタンを押すとリンクが貼ってないIDは、全てリンクがかかるようにもしたいのですが・・・。 欲張りを言って申し訳ありません。 宜しくお願いいたします。

  • エクセルVBAで、画像の挿入をしたいと思っています。

    エクセルVBAで、画像の挿入をしたいと思っています。 シート名は左から まとめ、A、B、C、まとめ(1)、A(1)、B(1)、C(1)、まとめ(2)、A(2)、B(2)、C(2) と、あるとして、任意のフォルダの中にある画像(*.jpgが9枚)を昇順でひとつずつA、B、C、A(1)、B(1)…C(2)シート(まとめ以外のシート)の指定のセルに貼付けられないかと考えています。 画像の名前は任意で、001.jpgはA、002.jpgはB、…009.jpgはC(2)と画像は昇順に、シートは左からというルールは変わらないとして、どのようにVBAを組んでいけばよいでしょうか。 どうぞご教授お願いします。

  • エクセルVBAについて

    エクセルVBA初心者です。 以下のような処理をしたくて、色々な質問等を見て組み合わせて動かしてみたものの、なかなかうまくいかず困っております。アドバイスいただけないでしょうか? 「Sheet1」に以下のようなデータがあります。 <A列> <B列> <C列> ok59  886 ok88 ok70 777 ok75 okGG 478 ok66 ok97 358 ok58 ok69 764 ok47 ok39 368 ok40 okGG 794 ok68 ok85 463 ok75 ・    ・ ・ ・    ・ ・ A列とC列にはそれぞれ「ok+2桁の数字or文字」が入っています。 B列は特に今回は使わないデータですが、数字が入っています。 やりたいことは以下の通りです。 A列に「GG」を含む文字列(実質okGGしかない状態です)が出てきたとき、 その1つ下の行のA列とC列のセルをピックアップし、背景色をピンク色にします。 上の例だと、A列は「ok97」と「ok85」、B列は「ok58」と「ok75」のセルが該当します。 さらにピンク色にピックアップしたセルのから、頭の「ok」を除いた数字を3.5倍した数字を、 別のシートに抽出したいのです。 なので、上の例を使用した場合の抽出したデータは以下のようになります。 <A列> <B列> 339.5 203 297.5 262.5 ちょっと複雑なのですが、どのようにするのがよいのでしょうか? また、別シートに抽出したいのですが、 「Sheet1」の特定のセルに日付が入っているので、 できればその日付の名前のシートを作り、そこに抽出できたらなぁ・・・と考えています。 「Sheet1」にデータを貼り付けて、ボタンをポンっとおしたら日付の名前のシートができて、 欲しいデータが抽出されていく・・・というイメージです考えています。 どうぞよろしくお願いします。

  • EXCEL VBAでたくさんのURLの一覧からHTTPレスポンスコードを取得したい。

    VBA初心者です。 EXCEL VBAでプログラミングの練習をしています。 シート名:一覧 URL記入セル:A1~A100 結果を記入するセル:B1~B100 があり、URL記入セルに入力されているURLにアクセスし レスポンスコードを(404とか200とか)B列に書き出す というのを実行できるコードの書き方を教えてください。 (1週間取り組んでいますがまだできません・・・) サンプルコードを直接改定頂けると最高です。 宜しくお願いします。

  • フォルダ内画像一覧表示に関して

    Windows VISTA プレミアム使用ですが、 画像フォルダを開くと、すべての画像が「山と海」のJPEGイメージ で表示されます。 表示タブで、中アイコン、大アイコン、一覧などにしても 写真一覧表示になりません。 写真が、ずらずらっと小さく写真一覧にしたいのです。 ファイルをクリックすると、きちんとWindowsフォトギャラリー で開きます。 何か設定するところありますか??

  • エクセルVBA作成に関して

    VBA作成についてお願いいたします. たとえば各セルに以下のような数値があるとします    A   B  C 1 150 2 2 145 6 3 237 7 4 254 6 5 結果としてC5セルに A1*B1+A2*B2+A3*B3+A4*B4の計算をし表示するVBAを作りたいと思っています. このくらい少ない場合はよいのですが,列が多くなるといちいち計算式を書くのは大変ですし,このあたりをVBAで作れないかと悩んでいます. つまり 例表示すると Range("A1").Value とあった場合("A1")の1を2,3,...と増やしていく(あるいは減らしていく)VBAは作成可能ですか? どうも調べたかぎりでは見あたらないようなので. この表現で質問の意図は伝わったでしょうか? ご存じの方よろしくお願いいたします.

  • VBAで、excelファイルのマクロを実行したら、特定のフォルダのファ

    VBAで、excelファイルのマクロを実行したら、特定のフォルダのファイルの特定セルを確認し、その結果を反映する、というマクロを組みたいと思っています。 具体的には下記のマクロを組みたいと思っています。 ------------------------------------------------------ (1)マクロを組むファイル【worksheet】にてマクロを実行する (2)特定のフォルダのファイルのA1、A2、A3、A4の全てに”OK”という文字が入っているかを確認 ・C:\excel\1番\kakunin_1.xls にあるkakunin.xlsの、A1セルに”OK”という文字が入っていたら次はA2、A3、A4の順序で 確認する。 ・このとき、A1にOKと入っていて、A2には入っていなかった場合は、A2という文字を、【worksheet】のB1セルに結果を表示する ようにする。 ・特定のフォルダの構成は下記 C:\excel\1番\kakunin_1.xls |--\2番\kakunin_2.xls |--\3番\kakunin_3.xls ・上記の処理を、1番フォルダの【kakunin_1.xls】で実行し、【worksheet】のB1セルに結果を表示。 2番フォルダの【kakunin_2.xls】で実行し、【worksheet】のB2セルに結果を表示。 3番フォルダの【kakunin_3.xls】で実行し、【worksheet】のB3セルに結果を表示。 ------------------------------------------------------ VBAどころかプログラミング自体が初めてなので、例えば引数が何かも一々考えて1文ずつ読み込まなければいけない状態です。。 どなたかこの無知な自分に力を貸して頂けないでしょうか?

  • 【エクセル】ファイルの更新日を表示

    エクセルSheet1にエクセルファイルをいくつかハイパーリンク してあり、それらのファイルのプロパティをみたときの更新日を 隣のセルに表示させたいんですけど、どうすればよいでしょうか? たとえばA列1~5行目までにハイパーリンクでエクセルのファイルを 表示させていて、B列に隣のA列に貼ってあるリンク先のエクセルファイル の更新日を表示させたいんですが、可能でしょうか? VBAはほとんどわからないので、出来ればエクセル関数で出来ると いいのですが、VBAのほうが良いのであれば教えていただいたVBAの 式を勉強しようと思います。よろしくお願いします。 使用しているエクセルのバージョンは2003です。

  • 複数のエクセルブックを一覧にすることはできますか?

    200個くらいの同一形式のエクセルを一覧にしたいのですが、 アクセスがない為、エクセルでなんとかできないかと、悩んでおります。 データは1つのフォルダの中に、 1.xls 2.xls ・ ・ ・ 200.xls と200個あり、それぞれA1:N20の範囲の中のセル内容を、 __|_A列_|_B列_|_C列_|・・・|_?列 _| 1行 |_1.xls_|_A1 _|_B1 _|・・・|_N20 _| 2行 |_2.xls_|_A1 _|_B1 _|・・・|_N20 _| 3行 |_3.xls_|_A1 _|_B1 _|・・・|_N20 _| 上記のように、 A列にファイル名を入れて、B列以降に1つのブックの内容を入れたいです。 (A列へのファイル名は、なくても最悪OKなのですが・・・。) 説明が足りないかもしれませんが、どなたか教えてください。 よろしくお願い致します。

専門家に質問してみよう