- 締切済み
エクセルのシートから、ファイル検索に関して教えてください。
エクセルのシートから、ファイル検索に関して教えてください。 ■エクセルの列に下記のような形で画像名が入っています。 a.jpg b.jpg c.jpg ↓ 500行程度 ■ローカルフォルダに1000枚程度 japgの画像が入っています。 以上のような状態で、ローカルフォルダのなかから、エクセルに記載してある 画像だけを取り出したいのですが良い方法はないでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- layy
- ベストアンサー率23% (292/1222)
指定した画像をシートにはりつけたいならやりたいのならわかりますが、単にどこかのフォルダに移したいだけならエクセルでやる必要ないです。 DOSのバッチファイルを作り、COPYコマンドを列挙すればすみます。VBAを使うより遥かに簡単な記述です。 シートをとりあえずテキスト形式で保存、COPYコマンドを追記、バッチファイル名にして実行。 内容は COPY_コピー元ファイル名_コピー先 キーワード3つしかありません。
- imogasi
- ベストアンサー率27% (4737/17069)
>ローカルフォルダに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)
ファイル名が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 でいけると思われます。