Excelで該当の画像ファイル張り付るVBAは?

このQ&Aのポイント
  • Excelで雛形のシートを複製して名前を変更し、該当する画像を指定したセルに張り付けるVBAを教えて頂けないでしょうか?
  • 現場写真というフォルダには、13枚の画像があります。雛形のエクセルシートに現場写真というシートを複製し、13枚の画像を指定したセルに張り付けたいです。
  • 画像を張り付ける場所は、一枚目をA1、二枚目をA46、三枚目をA91と指定しています。
回答を見る
  • ベストアンサー

Excelで該当の画像ファイル張り付るVBAは?

Excelで雛形のシートを複製して名前を変更し、該当する画像を指定したセルに張り付けるVBAを教えて頂けないでしょうか? 「現場写真」というフォルダ内に、下記の画像が入っています。 ・ 現場写真13-1.jpg ・ 現場写真13-2.jpg ・ 現場写真14-1.jpg ・ 現場写真14-2.jpg ・ 現場写真15-1.jpg ・ 現場写真15-2.jpg ・ 現場写真15-3.jpg 雛形のエクセルシートに「現場写真」というシートがあり、そのシートを複製し、シート名を「現場写真13」、「現場写真14」、「現場写真15」に変えて該当の写真を張り付けたいのです。 (雛形のシートの複製が難しいなら、新規シートを作成して、名前を変えるのでもOKです。) 張り付ける場所は、一枚目をA1、二枚目をA46、三枚目をA91にしたいです。(一枚目以外は、前の画像から2行あいた位置に入ればOKです) アドバイスよろしくお願いします。

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

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

淡々と。 sub macro1()  dim myPath as string  dim myFile as string  dim a as variant, b as variant ’初期化  a = array("","A1","A46","A91")  mypath = "C:\不明の場所の\現場写真\  'または  'mypath = thisworkbook.path & "\現場写真\"  on error goto errhandle ’画像ファイルの調査開始  myfile = dir(mypath & "*.jpg")  do until myfile = ""   b = split(myfile, "-")   worksheets(b(0)).activate  ’画像の挿入   with activesheet.pictures.insert(mypath & myfile)   .top = range(a(val(b(1)))).top   .left = range(a(val(b(1)))).left  ’.width = 指定無し  ’.height = 指定無し   end with   myfile = dir()  loop  exit sub errhandle: ’シートの複製  worksheets("現場写真").copy after:=worksheets(worksheets.count)  activesheet.name = b(0)  resume end sub

redcurb
質問者

お礼

アドバイスありがとうございます! 素晴らしい!完璧です!凄すぎます! 自分も勉強してこういうのができるようになりたいです。 勉強するのに何か良いサイトや本があるのでしょうか?

その他の回答 (3)

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.4

No.2です。 > With Application.FileSearch の部分が黄色くなってしまいうまく機能しませんでした。 EXCEL2003までは問題なく動きます。 多分EXCEL2007かEXCEL20010を使用していると思います。 正直かなり便利なコマンドでしたが、NO.1のkeithinさんのようにDIR()関数か 「Scripting.FileSystemObject」クラスに変更する必要があります。 すでに解決しているようなので、今回は省略させて頂きます。

回答No.3

VBAは苦手なので、こんなファイルを使っています http://lonewolf.chu.jp/

redcurb
質問者

お礼

アドバイスありがとうございます。 こういうのがあるの知りませんでした。 大変参考になりました。

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

redcurbさん こんにちは。   以下のプログラムでできると思います。 お試しください。   Sub 画像セット()  Const 検索フォルダ = "C:\現場写真"  Dim I    As Long  Dim F    As Long  Dim 写真名 As String  For I = 13 To 15   写真名 = "現場写真" & I   Sheets("現場写真").Copy After:=Sheets(Sheets.Count)   ActiveSheet.Name = 写真名   With Application.FileSearch    .NewSearch    .SearchSubFolders = True    ''サブフォルダも検索する    .LookIn = 検索フォルダ    .Filename = 写真名 & "*.jpg"    .Execute     For F = 1 To .FoundFiles.Count      Cells((F - 1) * 45 + 1, "A").Select      ActiveSheet.Pictures.Insert (.FoundFiles(F))     Next F   End With  Next I End Sub

redcurb
質問者

お礼

アドバイスありがとうございます。 With Application.FileSearch の部分が黄色くなってしまいうまく機能しませんでした。

関連するQ&A

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

  • EXCEL VBAで複数のシートの中から該当値を検索する方法について

    すいません、EXCEL VBAで複数のシートの中から該当する値を検索する方法について教えていただきたいことがあります。      Sheet1              A列   B列  C列   1行  11  りんご  31  2行  12  バナナ  32  3行  13  みかん  33  4行  14  ぶどう  34   ・   ・   ・     ・        Sheet2              A列   B列  C列   1行  31  すいか  11  2行  32  レモン  12  3行  33  パイン  13  4行  34  ざくろ  14   ・   ・   ・     ・ というデータが入っているブックについて 「全部のシートを検索し、A列に11の値が入っているセルの行数及びその行のB列の値」 をSheet1のD1セルとE1セルにそれぞれ返す方法はどうしたらよろしいんでしょうか。 For Each を使うのではないかと思って色々やってみたのですが、どうも上手く作動してくれません。 よろしくお願いいたします。

  • エクセル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」にデータを貼り付けて、ボタンをポンっとおしたら日付の名前のシートができて、 欲しいデータが抽出されていく・・・というイメージです考えています。 どうぞよろしくお願いします。

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

    エクセルシートに記載している画像ファイルを、別のフォルダから抽出 する方法を教えてください 今、エクセルシートの 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に記載されている 画像を取り込みたいのですが・・・・ どのようにしたらよいでしょうか

  • エクセルのVBAを教えて下さい

    エクセルのVBAについて質問させて頂きます。 あるブックを、指定した20~30個のリストのタイトルをそれぞれにつけて20~30個複製し、さらにその複製したブックの指定したセルにタイトルと 同じ指定したリストの文字列を入れることは可能でしょうか。 説明が下手くそで申し訳ありません。 たとえば、Aというタイトルのブックを、 1から100のタイトルをそれぞれつけて100個複製し、 このブックのシート1のセルB1にブックのタイトルを入れるというような感じなのですが…(汗) どなたか知恵をお貸しいただけると幸いです。

  • Excel 2007 VBAについて質問します。

    Excel VBAの初心者です。 行の非表示と表示についてお聞きしたいのです。 ExcelのSheet1の1行目(1行全体)のみを、シート上のセルをWクリックをして 非表示にしたり表示させたりするのには、どの様なコードを書いたらいいでしょうか? VBA初心者の為、分かりやすい回答をお願いします。

  • エクセル2003 VBAで セル内を 一発呼び出し

    エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。  よろしく お願いします。 表 列A~E(結合2行) :商品名と内容   列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで  氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで  たまに 同じ氏名  同じような 品を 検索する セルを 2個ほど作って  そこへ セル1へ 商品名を入力すると  該当する 行のみ 表示される。 セル2に 名前をを入力すると  該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。 

  • 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です。よろしくお願いいたします。

  • EXCEL VBA 印刷

    EXCEL VBA 印刷 初歩中の初歩で申し訳ありません・・・該当シート(Sheet1(名前は別名))の印刷をしたいと思い、ボタンの設定をしたのですが エラーとなります(画像を添付します。) お手数ですが、フォローの程宜しくお願いいたします。 参考までにコードも記載します。 Private Sub CommandButton9_Click() Range("A137").Select End Sub --------------------------上記はこんぼボックスで該当セルへジャンプしています。 Sub 印刷の実行() Worksheests("Sheet1").PrintOut End Sub

専門家に質問してみよう