• ベストアンサー

Filesearchオブジェクトを使用して隠しファイルを検索したい

こんばんは。 ExcelVBAを使用してファイル検索プログラムを作成したのですが、思うように動作させることができません。 作成したのは、セルに入力されているファイル名を取得して指定したドライブにファイルがあればそのファイルのパスを表示するプログラムです。 タイトルにあるように隠しファイルを検索することができません。 動作させたい環境は、 Windows98,Excel97 です。 (Windows2000,WindowsXPでExcel2000だと隠しファイルも検索することができました。) 自分で思いついて試してみたのは、 "Explorerの"フォルダオプション"-"表示"内の隠しファイルも表示するのチェックをOnにして検索プログラムを実行する"でしたがやはりだめでした。 どなたか解決方法をご存知の方がいらしたらご教授お願いできますでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
回答No.4

>また、FileSystemObjectを使用することに関してですが私とは別の人がFileSystemObjectを使用してVBでツールを作ったのですがこちらのが検索時間が短かったため私のを使うということになりました。 でももしかしたら、検索はFSOを利用しているかもしれません。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnofftalk/htm/office09072000.asp ※最初の説明とCustomFindFile関数の、変数名の扱い(Dim fsoFileSearch As Office.FileSearch)から推測 VBアプリはアルゴリズムがしっかりしていても、高速処理には不向きという欠点があるし、OfficeはC(?)なので作られたライブラリを利用しているので、速度差は出ると思います。 で、実験をお願いしたいです。 同じOS,Officeで差がでるなら、直接FSOの動きを見てみるのはいかがでしょう? あらかじめ、隠しフォルダ/隠しファイルを作成しておいてVBScriptで以下を実行してみてください。 --------------------------------------------------------------------------------------------- Set fsoObj = CreateObject("Scripting.FileSystemObject") '隠しフォルダ取得テスト Call MsgBox(fsoObj.FolderExists("C:\隠しフォルダ\")) '隠しファイル取得テスト Call MsgBox(fsoObj.FileExists("C:\隠しフォルダ\隠しファイル.txt")) Set fsoObj = Nothing --------------------------------------------------------------------------------------------- 2回Trueが走りますか? TrueならOfficeの問題 FalseならOSの問題 だと、勝手に推測 ※あくまでOfficeがFSO技術を利用していると仮定しての実験ですが・・・ ※はずしていたらすいません。

miyaxyz2002
質問者

お礼

こんばんは。 回答が遅くなってすみません。 結論から言うと、他の人がVBで作ったツールを使って作業をすることになりました。 '隠しフォルダ取得テスト'の件ですが、Windows98SE,Excel97の環境で使用してみたところ'True'が2回表示されました。 FileSearchがFSOを使用しているのかは正直はっきりとはわからないのですが、今回の件はOfficeの仕様の問題ではないかと私も思います。 1050\さんが参考として載せてくれたMSのページに"Office.FileSearch"と書いてあるので"FileSearch"は"Office"特有のオブジェクトなのだと理解しました。 そういった理由から今回はVBのツールで作業を行うことにしました。 今回の件は大変勉強になりました。 丁寧にアドバイスして大変感謝です。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 >Windows98SE,Excel97 SR-2です。 この件は、あまり確かではありませんが、FileSeach オブジェクトは、Outlook などのツールと関係があったと思います。だから、 >1.Officeにパッチをあてる。 >2.Windowsアップデートをあてる。 +IE のアップデート で、その環境が変わるのかもしれません。FileSearch オブジェクト直接ではありませんが、同じ機能を使っている、Officeの検索機能が使えなくなった話をみています。それも、初期には使えているが、後で使えなくなったということです。 私は、FileSearch オブジェクトは、検索の条件を増やすと極端にメモリの使用と検索時間が遅くなるので、例えば、Excelファイルのみという条件以外には使いません。 そこで、例えば、以下のようなコードなら、ノーマルファイルと隠し属性まで探しますね。 条件によって直してください。 Sub FileSearch2() Dim MyFile As String Dim AtFlg As String Const Dname = "C:\" Const Fname = "*.txt" MyFile = Dir(Dname & Fname, vbHidden) Do While MyFile <> ""    If GetAttr(Dname & MyFile) = vbHidden Then AtFlg = ", Hidden"      MsgBox MyFile & AtFlg    AtFlg = ""   MyFile = Dir Loop End Sub 隠し属性がついているときには、"ファイル名, Hidden" と出せます。

miyaxyz2002
質問者

お礼

こんばんは。 回答が遅くなってすみません。 結論から言うと、他の人がVBで作ったツールを使って作業をすることになりました。 >FileSearch オブジェクト直接ではありませんが、同じ機能を使っている、Officeの検索機能が使えなくなった話をみています。 の件ですが、 1050\さんが参考として載せてくれたMSのページに"Office.FileSearch"と書いてあるので"FileSearch"は"Office"特有のオブジェクトなのだと思います。 また、"Dir"の使用に関してですが別の人がVBで既にツールを作っていたこともありツールの作成時間なども考えてそちらを使うことにしました。 今回の件は大変勉強になりました。 丁寧にアドバイスして大変感謝です。

回答No.3

OSによって違う。 環境によって違う。 から想像すると、、、 1.Officeにパッチをあてる。 2.Windowsアップデートをあてる。 #2さんも環境を持っているようだし、質問者のOSのバージョンとOfficeのバージョンをそれぞれ書いてみては? ※バージョン=サービスパック状況を含む

miyaxyz2002
質問者

補足

こんばんは。アドバイスありがとうございます。 >1.Officeにパッチをあてる。 >2.Windowsアップデートをあてる。 もっともだと思いますが、"社内の数百台のPC内部監査で使用している(もちろんPCは98系ばかりではありませんし、どちらかというと少数派です)"・"管理者がアップデートをすることによって今まで動いていた環境が変わることを嫌っている"こともありなかなか即決できない状況です。 また、FileSystemObjectを使用することに関してですが私とは別の人がFileSystemObjectを使用してVBでツールを作ったのですがこちらのが検索時間が短かったため私のを使うということになりました。 いまさらながらの長々とした状況説明になってしまって申し訳ないです。 ちなみにOSとOfficeのバージョンですが、Windows98SE,Excel97 SR-2です。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 Excel 97 で、FileSearch を使用してチェックしてみましたが、問題ありません。隠し属性のファイルを検索できます。 >"Explorerの"フォルダオプション"-"表示"内の隠しファイルも表示するのチェックをOnにして検索プログラムを実行する"でしたがやはりだめでした。 一度、[スタート]-[設定]-[フォルダオプション]-[表示]で、設定しなおしてみてください。それで、ダメなら、コードを公開してください。

miyaxyz2002
質問者

補足

こんにちは。アドバイスを参考にフォルダオプションを設定みたのですが、やはりだめでした。 該当する箇所のコードを公開しますのでもし何かアドバイスなどがあったらお願いいたします。 With Application.FileSearch .NewSearch .LookIn = DName 'DName:ドライブ名 .SearchSubFolders = True .MatchTextExactly = True .Filename = FName 'FName:ファイル名 .FileType = msoFileTypeAllFiles If .Execute() > 0 Then For i = 1 To .FoundFiles.Count        Msgbox .FoundFiles(i) Next i end if End With

回答No.1

.SearchSubFolders = True .FileType = msoFileTypeAllFiles を追加してダメなら、FileSearchの仕様なのでしょう。 FileSystemObjectを使用するなりの、別方法を考える必要があるかもしれませんね。

関連するQ&A

  • ファイルの検索

    エクスプローラで「Program Files」フォルダを右クリックして検索 検索条件 ファイル名のすべてまたは一部:readme いつ変更?:わからない サイズは?:わからない 詳細設定オプション ファイルの種類:(ファイルとフォルダのすべて) システムフォルダの検索:オン 隠しファイルとフォルダの検索:オン サブフォルダの検索:オン 大文字と小文字の区別:オン 上記条件で検索するとたくさん見つかります。しかも大文字小文字混在で。ところが、 大文字と小文字の区別:オフ にすると、とたんに見つからなくなります。 大文字と小文字を区別しない:オン/オフ なら、今の動作も納得するのですが、逆のような感じです。 これはバグでしょうか。MSの技術情報を探しましたが見つかりませんでした。 この件について、ご存知の方、または同じ現象の出ている方、いらっしゃいましたら教えてください。

  • ファイルを検索しないと開けない

    ファイルを検索しないと開けない フォルダオプションの登録されているファイルの種類のところからよく分からないやつを消しました。 するとファイルを開くたびに検索のやつが出るようになりました。ファイルは開けるのですが、とてもめんどくさいです。どうしたらいいですか?windowsXPを使ってます。

  • ファイルを検索しないと開けない

    ファイルを検索しないと開けない フォルダオプションの登録されているファイルの種類のところからよく分からないやつを消しました。 するとファイルを開くたびに検索のやつが出るようになりました。ファイルは開けるのですが、とてもめんどくさいです。どうしたらいいですか?windowsXPを使ってます。

  • HTMLファイル内の文字列検索

    はじめて質問させていただきます,kokko1719です. 今,ExcelVBAを使ってツールを作成しています. その中で,フォルダ内にある複数のHTMLファイルから特定の文字列を検索し,抽出するコードを作成したいのですが,うまくいきません. 使っているExcelが2007なのでFileSearchを使うことができません. 一応,再帰処理を実装してファイルを探索するところまでは出来ている…と思います.(特定のフォルダを探しに行って○個見つかりましたとメッセージは出ます) その後のファイルを開き検索,特定のシートに抽出することができません. 現在作成しているコードでは,検索条件が1つしかないのですが, 実際は,HTMLファイルで使用している画像ファイル名を検索して抽出したいので,条件も複数指定したいと思っています(jpg,gif,pdfなど). ExcelVBAを学び始めて日が浅いため作業が止まってしまっています.きっと調べ方も悪いのでしょうが…. どうか教えていただけましたら幸いです.

  • 他のExcelファイルのVBAコードを検索したい

    他のExcelファイルに書かれたVBAコードに、ある特定のキーワード(パス名など)が使われているかを自動的に調べるためのVBAを書きたいと思っています。 仕事で使っているマクロが書かれたExcelファイルからある特定の処理をしているマクロを含むものを検索したいのですが、検索するExcelファイルが膨大なため、順番にExcelファイルを開いてVBAコードをチェックしていく工程をマクロ化したいのです。ファイルを順に開いていく処理はマクロ化できるのですが、書かれたVBAコードのチェックをどうしたらよいか悩んでいます。 「VBAコードに対して検索する」または「VBAコードを1行ずつ変数に代入する」、「モジュールシートをテキストファイルに出力する」などの処理が自動化できれば対応できそうなのですが、そのような処理をExcelVBAで作成できるでしょうか。 なお環境はWindowsXPのExcel2003です。 よろしくお願いいたします。

  • 一太郎ファイルの内容がwindowsで検索できない

    フォルダ内のファイル検索で、エクスプローラーの検索窓に検索語句を入力しても、ワードやエクセルはファイルの内容まで検索してくれますが、一太郎のjtdファイルが検索にひっかかりません。もちろん確実にフォルダに入っています。 フォルダオプションでマイドキュはインデックス作成の対象になっています。また、「検索項目」でファイルの内容まで検索するように設定しても検索されません。インデックスのオプションの詳細設定で、ファイルの種類に一太郎関連ファイルはちゃんとチェックが入っています。 一太郎付属のJSファイル検索ツールを使うと、jtdファイルはもちろん、ワードやエクセルも内容までちゃんと検索して検出されます。 ということでJSファイル検索ツールを使えばいいのでしょうが、なぜエクスプローラで検索できないのか、わからず不便です。 お分かりの方、ご教示ください。

  • Excel2010VBAでエラーが出る相対パス指定

     ExcelVBAで,Excel2007と2013で問題無いのに, Excel2010ではエラーが出る相対パス指定について, ご教示を頂けると助かります.  ExcelVBAにて, ○○.dll ファイルを 以下のように宣言して使っています. Private Declare Function LoadTT Lib ".\○○.dll" _ () As Integer  プログラムの中で, ret = LoadTT() を実行すると, Excel 2007では相対パスでの指定で問題無く動作しますが, Excel 2010では相対パスでの指定ではエラー(ファイルが見つからない)"48"が出ます. そこで,相対パス指定をやめて絶対パスに変更すると問題無く動作します.  念のため Excel2013でも試したところ, 2007と同様に,相対パス指定でも問題なく動作しました.  なお,ExcelVBAのファイル「○.xlsm」と「○○.dll」は同じフォルダーに入れています.  また, ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path の実行によるカレントフォルダーの確認も,どのバージョンでも同じに正しく確認出来ています.    因みに,バージョンの違う各Excelは別々のPCでの動作ですが,使用OSは Windows7 Professional 32bit で同じです.  以上のように Excel2010だけ動作が異なります.  とりあえずは絶対パス指定にすれば問題は解消するのですが, Excel2010で特に何か設定したということは無いので気持ち悪く, 原因と思われることでご存じ方がいらしたらご教示を頂けると助かります.  どうぞよろしくお願い致します. ==

  • ファイル検索

    いつもお世話になっております。 エクスプローラからファイル検索をするときに 「検索」→「ファイルとフォルダすべて」→ 「ファイル名のすべてまたは一部」 にキーワードを入力して検索しますが、 あるコンピュータでは検索結果がたくさん表示され るのに、あるコンピュータでは検索結果が0件に なります。同じフォルダ内を検索しているのに、 何故結果が違ってくるのでしょう? どうかよろしくお願いいたします。

  • Win7、ファイル検索で表示されない

    Win7を利用しています あるデスクトップにあるフォルダー(a)に画像が160,000件程度入っています この中に特定のファイルがあるかどうか検索したいと思っています 例えば、「00000047.JPG」のファイルがあるかどうか検索したいと思い スタートボタンを押下後、「プログラムとファイルの検索」に該当の「00000047.JPG」 を入れて検索してもaフォルダーに該当ファイルがあると表示されません しかし、同じファイル名の画像ファイルをデスクトップに作成し、aフォルダーに コピーしようとすると、該当ファイルがあると表示されます つまり、Win7の検索機能で、該当ファイルの検索ができません。 何故でしょうか また、エクスプローラを利用してaフォルダーの中身を該当ファイルをみようとして、 名前の昇順にしてみているのですが 最初にくるのが、000000A0.JPG、000000A1.JPG・・・となって、それよりも前に表示される べきと思われる、00000047.JPGが表示されません。 名前の昇順なら、00000047.JPG、000000A0.JPG・・・と表示されるりでないかと思うのですが・・・ 何か検索の時の設定等があるのでしょうか?

  • Windows7のファイル検索

    同じフォルダーにエクセルとワードのファイルがあります。ファイルの中身を検索するとワードは出来るのですが、エクセルでは検索できるものとできないものがあります。 情報量の少ないファイルでは検索ができ、多いものではできない傾向にありますが、そうでない場合もあります。 インデックスのオプションでインデックスの対象、ファイルの種類は間違いないように思えます。 フォルダーオプションでの検索ではファイル名と内容を常に検索にするがオンになっています。 検索ができない原因に心当たりの方よろしくお願いします。

専門家に質問してみよう