• 締切済み

VBA

ACCESS2003やEXCEL2003のVBAでプログラムしようとしています。 所定のフォルダ内にあるファイルを、ファイル名を指定して検索する方法を教えてください。 【条件】 (1)所定のフォルダ  このフォルダには、大量のファイルがあります。  サブフォルダも存在して、その中にも検索するファイルがあります。  サブフォルダの階層もランダムです(サブフォルダの中にさらに  フォルダがあり、その中にもファイルがある場合があります)。  探すファイルは、複数存在する場合(フォルダ違いで)も  ありますが、すべて検索します。 条件が酷のような気がしますが、なるべく早い検索方法はあれば 幸いです。よろしくお願いします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

Function 検索(ByVal フォルダ As String, ByVal ファイル As String)   Dim FSO, FLD   Set FSO = CreateObject("Scripting.FileSystemObject")   Set FLD = FSO.GetFolder(フォルダ)   ReDim 結果(0)   Dim 数 As Long   処理 FLD, ファイル, 結果, -1   If 数 >= 0 Then     検索 = 結果 '1個以上見つかった場合   Else     ' == 見つからない場合   End If End Function Sub 処理(FLD, ファイル, 結果(), 数)   Dim SF   For Each SF In FLD.SubFolders     処理 SF, ファイル, 結果(), 数   Next   Dim N   For Each SF In FLD.Files     N = SF.Name 'ここでファイル名を得る     If N = ファイル Then       数 = 数 + 1       ReDim Preserve 結果(数)       結果(数) = SF.Path     End If   Next End Sub Function 検索 は見つけたファイルのパス名の配列を返します。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

関連するQ&A

  • VBA サブフォルダ内のエクセルファイル転記

    VBAについてお尋ねします。 当方VBA初心者です。 やりたい事は下記です。 ・サブフォルダ(2階層目)に入っているエクセルファイルからマクロ実行ファイルにセルデータを転記 ・全てのサブフォルダを網羅 サブフォルダに対しての扱いが難しくて理解に困ってます。 サルプルなどありましたらいただけると幸いです。 よろしくお願いします。

  • (VBA) 多階層のフォルダーの配置換え

    VBA 多階層のフォルダーを配置換えする 2021/07/13 16:54 以下のような操作をEXCELのVBAで処理可能でしょうか ? --------------------- 例えば、 添付画像のような階層が深いフォルダーの各層の最後に存在している AAABBB,CCC,DDD,EEEの各フォルダーを#testに引き上げる。 ターゲットは、フォルダーでファイルではありません。 1段下層のフォルダーを引き上げるBATなどは検索すれば見つかりますが 階層が深い(多階層)の場合を見つけられませんでした。 (ファイルの場合は少し見つかりましたがフォルダーは見つけられませんでした。) 具体的には O:\#test\AAA O:\#test\#2\BBB O:\#test\#2\#3\CCC O:\#test\#2\#3\DDD O:\#test\#2\#3\#4\EEE を O:\#test\AAA O:\#test\BBB O:\#test\CCC O:\#test\DDD O:\#test\EEE に配置換えする 配置換え後は、O:\#test\#2及#2以降の下層のフォルダーは削除する。 ---------------------

  • Outlook VBAについてです!!

    アウトルックのVBAについて、教えてください!! アウトルックのVBAについて、 受信と同時に添付ファイル(Excel)をフォルダに自動保存したいのですが下記条件があります。 1.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Aさんのみ   フォルダ;デスクトップの「Aさん勤務管理」フォルダ 2.添付ファイル名:*勤務管理* (「勤務管理」を含むファイル名)   差出人:Bさんのみ   フォルダ;デスクトップの「Bさん勤務管理」フォルダ  (参考URL http://q.hatena.ne.jp/1218725545) このように2つの条件を入れる場合にはどのように記載すれば 良いのでしょうか? 参考URLにあるものを用いて、1つの設定はできるのですが 2つ目の条件(この場合、Bさんの条件)を追加できません!! 本当に初心者なので、ぜひともお力を貸してください!!

  • エクセルVBAまたは関数でファイル検索する方法

    お世話になります。 概要 エクセルVBAまたは関数でファイルの検索をする方法を教えて下さい。 詳細 ディスクにたくさんの楽曲ファイルがあります。 その中に目的のファイルがあるか否かをエクセルのVBAまたは関数を使って検査したいです。 具体的には、エクセルシートのA列に曲名が入力してあります。 例として、A1に「青い珊瑚礁」と曲名がテキストで入っています。 さて、これと同じファイル、またはフォルダが、ディスクの中に存在しているか否か、の結果をB1に表示したいと思います。 出来ますでしょうか? ディスクの全フォルダに対して検索を掛けると大変なので、検索先のフォルダは絶対パス指定して、それ以外のフォルダは検索しなくていいものとします。 もし、一致するフォルダ、ファイルを探すのは大変、というのであれば、 指定したフォルダに存在するすべてのファイル、フォルダの名称を「テキストファイルとして書きだす」方法を教えてください。 そのテキスト文字列に対して検索をすれば同じ結果が得られますので。。。 よろしくお願いします。

  • VBAでどのようにすればいいのでしょうか。

    Excel2007でCSVファイルを取り込むVBAで作成しています。 下記のURLを参考にしています。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_030.html 皆さんにお聞きしたい事があり、投稿させていただきました。 CSVファイルの先頭行にタイトル行が指定されている場合、VBA上で除外する事は可能でしょうか。 できれば Do Until objTS.AtEndOfStream ※この中で・・・ Loop すみませんがどうかアドバイス宜しくお願いします。 では失礼します。

  • フォルダのプロパティ内容の取得-VBA

    サブフォルダとファイルを含むフォルダのプロパティを開くと、 内容欄にファイル数(サブフォルダ内のファイルを含む)とフォルダ数が表示されます。 このファイル数をVBAにて取得する方法を教えて下さい。 特定のフォルダを指定し、そのフォルダ内だけのファイル数取得する方法は、 インターネット上に散見されますが、 サブフォルダ内のファイルを含むファイル数を一発で取得する方法が見つかりません。

  • VBAで次のような処理をできるかどうか教えてください

    あるフォルダにエクセルファイルが複数入っています。また同時にサブフォルダがあり、その中にもファイルが入っていて、その中もサブフォルダがはいっていて・・・この時、全てのファイルのA1に数値が入っているとして、このA1の数値を全部足したモノを新規のExcelブックを作り、そのA1に値を表示させたいみたいな事はできるでしょうか?もしくは実現するにはVBのような言語を使わないといけないのでしょうか?

  • 古いデータファイルの退避に便利な方法orソフト

     My Documentsの中には、目的別にいくつものサブフォルダがあり、それぞれいっぱいデータファイルがたまっています。 なんとか減らしたいのですが、消せるものはほとんどありません。しかしめったにアクセスしない古いファイルはたくさんあります。  そこで以下のようなことをしたいと思っています。 (1)期間を指定する(例:2002/1/1~2002/12/31) (2)My Documentsの中から(1)で指定した期間に作成(更新)されたファイルのみピックアップし、別のフォルダに移動する。 (3)移したフォルダをMOやCD-Rに保管する。 これだけならば、エクスプローラの検索を使えばできますが、それだとみんな同じ階層になってしまい、あとから検索しようとしてもできません。そこでもうひとつ要望があるのです。それは、ファイルの移動の際に「現在のMy Documents以下のフォルダ階層と同一の階層を形成してその中に移動する」ということです。  完成像を言いますと、 「元々あったMy Documentsと全く同じフォルダ階層をもった新しいフォルダができ、あらかじめ指定した複数の古いファイルが、それぞれ元々あった階層と同じレベル(階層)のサブフォルダに移動されている」というものです。  すみません、うまく説明ができてないかもしれませんが、結構切実な悩みとなっています。なんとかお願いします。

  • エクセルVBA でフォルダーの作成方法

    エクセルVBAでフォルダーの有無を確認する。 同じデレクトリ上で同一名のフォルダー、ファイルが存在するなら そのまま次の作業に進み、 デレクトリ、フォルダー、ファイルが存在しない場合は新規に 作成する。 新規に作成するのは MkDir "c:\white\DXF"で可能ですが、有無の判定の方法がわかりません。 初心者ですのでよろしくお願いします。 判定式がないと条件によってはエラーが生じます。

  • VBAの勉強の仕方

    私は独学でVBAを勉強していますが こんな方法で上達するのか不安なので質問します。 自分は、Dドライブに「VBAサンプルコード」と言うフォルダを作り、basファイルを書き溜めています。 【Access】フルパスを取得する.bas 【Excel】フルパスを取得する.bas デスクトップのパスを取得する.bas 【Excel】フォルダを作成する.bas 【Access】ナビゲーションウィンドウを表示しない.bas などです。 そしてwindowsの検索機能を使って使いたい時に引き出しています。 ダブルクリックして開くと ********************************************** Attribute VB_Name = "Module1" Option Compare Database Option Explicit Sub ナビゲーションウィンドウを表示しない() DoCmd.SelectObject acForm, "", True DoCmd.RunCommand acCmdWindowHide End Sub ********************************************** がメモ帳で表示されます。 時間がある時にネットでサンプルコードを見て 「VBAサンプルコード」フォルダにしこしこ追加していってます。 しかしこんなチマチマした作業で上達するのでしょうか? 実際作りたいリストや管理したいデータベースがないので 勉強になりませんが このような方法は皆さん行なっていますか? ご教授よろしくお願いします。

専門家に質問してみよう