こんばんは。
ExcelVBAを使用してファイル検索プログラムを作成したのですが、思うように動作させることができません。
作成したのは、セルに入力されているファイル名を取得して指定したドライブにファイルがあればそのファイルのパスを表示するプログラムです。
タイトルにあるように隠しファイルを検索することができません。
動作させたい環境は、
Windows98,Excel97
です。
(Windows2000,WindowsXPでExcel2000だと隠しファイルも検索することができました。)
自分で思いついて試してみたのは、
"Explorerの"フォルダオプション"-"表示"内の隠しファイルも表示するのチェックをOnにして検索プログラムを実行する"でしたがやはりだめでした。
どなたか解決方法をご存知の方がいらしたらご教授お願いできますでしょうか?
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
>また、FileSystemObjectを使用することに関してですが私とは別の人がFileSystemObjectを使用してVBでツールを作ったのですがこちらのが検索時間が短かったため私のを使うということになりました。
でももしかしたら、検索はFSOを利用しているかもしれません。
http://www.microsoft.com/japan/msdn/library/defa …
※最初の説明と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技術を利用していると仮定しての実験ですが・・・
※はずしていたらすいません。
こんばんは。
回答が遅くなってすみません。
結論から言うと、他の人がVBで作ったツールを使って作業をすることになりました。
'隠しフォルダ取得テスト'の件ですが、Windows98SE,Excel97の環境で使用してみたところ'True'が2回表示されました。
FileSearchがFSOを使用しているのかは正直はっきりとはわからないのですが、今回の件はOfficeの仕様の問題ではないかと私も思います。
1050\さんが参考として載せてくれたMSのページに"Office.FileSearch"と書いてあるので"FileSearch"は"Office"特有のオブジェクトなのだと理解しました。
そういった理由から今回はVBのツールで作業を行うことにしました。
今回の件は大変勉強になりました。
丁寧にアドバイスして大変感謝です。
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" と出せます。
こんばんは。
回答が遅くなってすみません。
結論から言うと、他の人がVBで作ったツールを使って作業をすることになりました。
>FileSearch オブジェクト直接ではありませんが、同じ機能を使っている、Officeの検索機能が使えなくなった話をみています。
の件ですが、
1050\さんが参考として載せてくれたMSのページに"Office.FileSearch"と書いてあるので"FileSearch"は"Office"特有のオブジェクトなのだと思います。
また、"Dir"の使用に関してですが別の人がVBで既にツールを作っていたこともありツールの作成時間なども考えてそちらを使うことにしました。
今回の件は大変勉強になりました。
丁寧にアドバイスして大変感謝です。
No.3
- 回答日時:
OSによって違う。
環境によって違う。
から想像すると、、、
1.Officeにパッチをあてる。
2.Windowsアップデートをあてる。
#2さんも環境を持っているようだし、質問者のOSのバージョンとOfficeのバージョンをそれぞれ書いてみては?
※バージョン=サービスパック状況を含む
この回答への補足
こんばんは。アドバイスありがとうございます。
>1.Officeにパッチをあてる。
>2.Windowsアップデートをあてる。
もっともだと思いますが、"社内の数百台のPC内部監査で使用している(もちろんPCは98系ばかりではありませんし、どちらかというと少数派です)"・"管理者がアップデートをすることによって今まで動いていた環境が変わることを嫌っている"こともありなかなか即決できない状況です。
また、FileSystemObjectを使用することに関してですが私とは別の人がFileSystemObjectを使用してVBでツールを作ったのですがこちらのが検索時間が短かったため私のを使うということになりました。
いまさらながらの長々とした状況説明になってしまって申し訳ないです。
ちなみにOSとOfficeのバージョンですが、Windows98SE,Excel97 SR-2です。
No.2
- 回答日時:
こんにちは。
Excel 97 で、FileSearch を使用してチェックしてみましたが、問題ありません。隠し属性のファイルを検索できます。
>"Explorerの"フォルダオプション"-"表示"内の隠しファイルも表示するのチェックをOnにして検索プログラムを実行する"でしたがやはりだめでした。
一度、[スタート]-[設定]-[フォルダオプション]-[表示]で、設定しなおしてみてください。それで、ダメなら、コードを公開してください。
この回答への補足
こんにちは。アドバイスを参考にフォルダオプションを設定みたのですが、やはりだめでした。
該当する箇所のコードを公開しますのでもし何かアドバイスなどがあったらお願いいたします。
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「エクセルファイルが開いてい...
-
エクセルのVBAで開いている...
-
vbs ブック共有を解除
-
excel マクロ PDF化の際のエラ...
-
Long型で表現できないファイル...
-
動かなくなってしまった古いVBA...
-
VBAでフォルダ内のhtmlファイル...
-
webブラウザからローカルファイ...
-
タイムスタンプの更新の方法2
-
ExcelVBA 文字コード変換
-
VB6でUTF-8ファイルの読取りを
-
「AccessViolationException」...
-
複数のワークブックのVBAを変更...
-
vbsでのアスタリスクとファイル...
-
Accessのウインドウサイズの固定
-
サブフォルダ含むフォルダ内の...
-
Excel VBA Outlookメールにエ...
-
VB.net XMLの作成方法 Iniの代替
-
「mcisendstring」 MIDIフ...
-
ExcelVBAマクロでテキストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォルダ含むフォルダ内の...
-
vbs ブック共有を解除
-
動かなくなってしまった古いVBA...
-
vbaサブフォルダーをワイルドカ...
-
「エクセルファイルが開いてい...
-
ffftpでファイル取得が0バイト...
-
Accessのウインドウサイズの固定
-
FileDialog オブジェクトでファ...
-
VB6でUTF-8ファイルの読取りを
-
VBからExcelファイルを開くとき...
-
VBAでフォルダ内のhtmlファイル...
-
excel マクロ PDF化の際のエラ...
-
Wordのプロパティ・総ページ数...
-
フォルダ階層・ファイル名・ペ...
-
コモンダイアログでフォルダを...
-
VB.net XMLの作成方法 Iniの代替
-
vbsでのアスタリスクとファイル...
-
エクセルのVBAで開いている...
-
ファイルを開く時間測定のスク...
-
AccessからOLEオブジェクト型の...
おすすめ情報