• 締切済み

エクセルのシートから、ファイル検索に関して教えてください。

エクセルのシートから、ファイル検索に関して教えてください。 ■エクセルの列に下記のような形で画像名が入っています。 a.jpg b.jpg c.jpg ↓ 500行程度 ■ローカルフォルダに1000枚程度 japgの画像が入っています。 以上のような状態で、ローカルフォルダのなかから、エクセルに記載してある 画像だけを取り出したいのですが良い方法はないでしょうか?

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

指定した画像をシートにはりつけたいならやりたいのならわかりますが、単にどこかのフォルダに移したいだけならエクセルでやる必要ないです。 DOSのバッチファイルを作り、COPYコマンドを列挙すればすみます。VBAを使うより遥かに簡単な記述です。 シートをとりあえずテキスト形式で保存、COPYコマンドを追記、バッチファイル名にして実行。 内容は COPY_コピー元ファイル名_コピー先 キーワード3つしかありません。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>ローカルフォルダに1000枚程度 japgの画像が入っています。 その画像ファイルを読んで、画像ファイル名(文字列です)を捉えるプログラムを作る技量はありますか。 在れば1つずつ画像ファイルを読んで、エクセルの1つの列に在る画像ファイル名に該当があるか、VBAでプログラムを組めば、中級の技量で組めます。 FSOを知ってますか。またはDIR関数とか。 Sub test01() Dim objfolder Dim objFl Set objfs = CreateObject("Scripting.FileSystemObject") Set objfolder = objfs.getfolder("C:\Documents and Settings\XXX\My Documents\My Pictures") For Each objFl In objfolder.Files MsgBox objFl.Name Next End Sub 私の場合上記のフォルダの中に写真から来た画像ファイルがあり、上記を実行すると、1つづつ画像ファイル名を表示しました(テスト済み)。 ーー このMsgBox objFl.Nameのあとに、このファイル名を使って(例えば)A列に在る画像(ファイル)名 と一致するものがあるか、検索すれば良い。 全行総なめする(最近のパソコンは処理が早いので、毎回500回比較してチェックしても(平均は250回))使い物になると思うが)とか、VBAでMATCH関数を使うとか色々方法はあります。勉強のこと。 該当分を書き出すのは、その該当有りファイルを、あるホルダにコピーする方法をFSOででも勉強のこと。 でもプログラム経験がなければ、難しい部類の課題では。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

ファイル名がA1から順に入っているとして Sub test() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") For i = 1 To Range("A" & Rows.Count).End(xlUp).Row FSO.MoveFile "フォルダのフルパス" & Range("A" & i).Value, "移動先のフルパス" Next Set FSO = Nothing End Sub でいけると思われます。

関連するQ&A

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

    エクセルシートに記載している画像ファイルを、別のフォルダから抽出 する方法を教えてください 今、エクセルシートの 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関数だと列に対してだと思うのですが、行に対して検索したいです。うまく伝えられないので、例えば 【シート1】    A   B   C   1  555 2  666 3  777 4  222 【シート2】    A   B   C   D 1  777    555    222 2 3 上のようなシートがあり、 シート1のA列の番号がシート2の1の行に有ったら、 シート1のB列にOKと表示、無かったらNGと表示、 の様な関数ってありますか? どなたか解る方お願いします。

  • 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 を使うのではないかと思って色々やってみたのですが、どうも上手く作動してくれません。 よろしくお願いいたします。

  • ファイル名変更してコピー

    エクセル2000で次のような処理が出来ますでしょうか。 まず前提として、シート1のA列にフォルダAの中の001.jpg~100.jpgと言う画像 がリンク付けてあります。(A1は001.jpgに~A100は100.jpgに)。 そこで、シート1のB列にB1からB***まで数字をガンガン打ち込んでいきます。 打ち込み終わりで、実行すると例えばB1が30だとすると030.jpgを 1-030-001.jpg( (1から連番)-(画像番号)-(検索された回数).jpg ) と言うふうにしてフォルダBにコピーしたいのですが・・。 こんな事出来ますでしょうか?

  • エクセル 検索と抜き出し

    エクセル2010を使っています。 関数に詳しくないので、教えて頂けませんか? 画像の様なデータシートがあります。 2行目から40行目まで、画像の様に数字が入っていて、D1に入力された数字【画像では1】をA列から全て検索し、その右のB列の数値をD2から以下に抜き出したいと思います。 黄色で塗りつぶした部分です、(例として数値を表示させています) また同じ形で、E~H列、I~L列と言う風にAF列まであります。 詳しい方、教えて頂けませんか? よろしくお願い致します。

  • Excelで、検索した行を、抜き出して自動的に新しいシートを、作りたい。

    1     A   B   C  ・・・・・・・  1 15497  874  7789  ・・・・・・・   2 24589  485  4488  ・・・・・・・  ・  ・  ・   ・  ・・・・・・・  ・  ・  ・   ・  ・・・・・・・  今、エクセルで、上記の様な表をもっています。 2、列Aに、例えば15という文字列で、検索をかけて、見つけた行を  抜き出して(元の表には、データは残します)、自動的に新しい  シートを作りたいのですが、教えてください。 3、エクセルでは、この操作が、難しい場合、やり易いソフトが、あれ ば教えてください。  その場合、今のエクセルのデータの移植方法も、教えていていただけ ると、助かります。 

  • エクセルのブックとシートを動的にリンクさせるには?

    お世話になります。エクセル初心者です。現在はWindowsXPでエクセル2003を使用しています。 皆様のお知恵をお借りしたくこちらに質問させていただきます。 エクセルファイル内の各シートから集約用に作ったシートにVLOOKUP等で集積させて数値の推移を図るファイルを作っています。 データ量が多くかつ、書式を少なめに使っているのですが、エクセルの書式等が認識できる許容範囲を超えてしまい、やむおえず一部データを同じフォルダ内に別ブックを作ってそちらに分割保管(Aというファイルがデータ集積表示用なのですが、Aに入れたい各データのシートが許容オーバーで入りきらず、Bというデータだけを入れた別エクセルファイルを作り、一定の量が溜まったらCというデータだけを入れたファイルを作るという形を取ります(保管するためにやむ終えずこの形を取る事になっています))する事にしました。 (※古い2003を使っていて恐縮ですが、まだまだWindows7に会社が切り替えてエクセルも最新版にしてくれる見込みがありません。。。) そこで、以下の通り入力、ブックが同じフォルダ内保管されていると仮定し、試みているのですが、「INDIRECT」だとブックが閉じている際に開けない事が調べているうちに分かりました。 私としてやりたいことは (1)A1に検索値 (2)B1にブック名(任意のローカルフォルダに保管されている前提。ゆくゆくは会社の共有しているサーバー内に格納して誰でも開ける場所に保管するつもりです、この式を入れているこの集積表示用データもB1以下に記載されるブック達と同じ場所に保管します) (3)C1にシート名(B1のブック名内にあるシート名、シート名は連番になって続いています) (4)D1にC1で指定したシート内を検索するための列番号 <現在試みている式(F1から下の行に同じ式を1つずつずらして入れていきます)> =IF(ISERROR(VLOOKUP($A$1,INDIRECT("\●●●\←ここには任意のファイル場所が書いてあるとしてください["&B1&".xls]"&C1&"!$A:$AD"),$D$1,FALSE)),"",VLOOKUP($A$1,INDIRECT("\●●●\←ここには任意のファイル場所が書いてあるとしてください["&B1&".xls]"&C1&"!$A:$AD"),$D$1,FALSE)) 月毎にBとCは1行ずつずらして値を1つずつ増やして上記式もBとCだけ1行ずつずらして書いていく方式をとっていくという形です。 ずらしてく毎にBとCの行の値が1つずく更新され、ブックとシートを上手く検索して反映させたいと思っていますが、何か上手くやれる方法はないでしょうか? (BとCのファイル名はもちろん番号が1つずつずれるように作っています。) VBAを使う方法があるのかな・・・?とも思っているのですが、なにぶん初心者なものでそのあたりが全くちんぷんかんぷんで困っています。。。 INDIRECTはブックが開いていないと反映されない事も調べて判明致しました。 どなたかお助けいただけないでしょうか? 新しいやり方やもっといい式があるという方、アイディアを拝借できれば幸いです。 VBAであればこういう風に出来るというやり方もあれば学びたいと思っています。 お粗末な内容ですがご指導お願い致します。 ※不足している情報等あればおっしゃってください。 出来れば来週中に仕上げていかなくてはいけないデータの為、大変身勝手な事を言っているのを承知しておりますが、どなたか宜しくお願いいたします。

  • エクセルの比較一致を別シートに書き出し!

    エクセルで別々のシートで比較一致したシートを別のシートに自動で書き出しが出来るようにしたいのですがどうやって良いのか分からないので教えてください! まず、sheet1に下記の表があります。   A列 B列 C列 D列 E列 1行 部品1 c1 c2 c3 c4 2行 部品2 r1 r2 r3 次にsheet2は下記の表があります。   A列 1行 c1 2行 r1 3行 c2 4行 r2 5行 r3 6行 c3 7行 c4 このsheet1とsheet2と比較させて、一致した内容をsheet3を下記のように表示させることは、出来ますか?(部品1=c1,c2,c3,c4 部品2=r1,r2,r3)   A列 B列 1行 c1 部品1  2行 r1 部品2 3行 c2 部品1 4行 r2 部品2 5行 r3 部品1 6行 c3 部品1 7行 c4 部品1 以上、お手数ですがよろしくお願いします。

  • エクセルで入力した文字を別シートで検索して・・・

    エクセル初心者です。既にご質問、ご回答がありましたらすみませんがご教授願います。 シート1のA1に入力した文字を シート2の1行目から検索 検索された文字の同列の2行目の数値を シート1のB1に表示させるにはどのようにしたらよろしいでしょうか? また、シート1のA1に入力した文字を シート2のA列から検索 検索された文字の同行のB列の数値を シート1のB1に表示させる場合はどのようにしたらよろしいでしょうか? 説明がヘタでわかりづらいかもしれませんが、2通りのご教授を宜しくお願い致します。

  • Excelで文字列リストを用いた一括置換方法

    エクセルについて質問させてください。説明が難しいのですが、A列、B列、C列にそれぞれ以下の ように記入してあったとします。 .....A列.........................B列.................................................C列 ....────────────────────────────── 1│ a │ http://○○.co.jp/img_1.jpg │ http://○○.co.jp/img_2.jpg 2│ b │ http://○○.co.jp/img_1.jpg │ http://○○.co.jp/img_2.jpg 3│ c │ http://○○.co.jp/img_1.jpg │ http://○○.co.jp/img_2.jpg このリストの「img」と記載してある部分をA列に記入してある文字列に一括で置き換えた いのですが、そのような事は可能でしょうか? ▼ このように置き換えしたいです ▼ .....A列.........................B列.................................................C列 ....────────────────────────────── 1│ a │ http://○○.co.jp/a_1.jpg │ http://○○.co.jp/a_2.jpg 2│ b │ http://○○.co.jp/b_1.jpg │ http://○○.co.jp/b_2.jpg 3│ c │ http://○○.co.jp/c_1.jpg │ http://○○.co.jp/c_2.jpg 最初は1行ずつ地道に置き換え作業を行っていたのですが、こういったリストが数千行にも及び 流石にそれでは効率が悪すぎると思い至りました。マクロ等で可能かどうか調べてみたんですが エクセル初心者級の私には難し過ぎて理解できません・・ ちなみに画像のURLが記載してある列はC列以降も続いています よろしければお知恵を拝借したいです。よろしくお願いします

専門家に質問してみよう