電子書籍の厳選無料作品が豊富!

はじめて質問させていただきます,kokko1719です.
今,ExcelVBAを使ってツールを作成しています.
その中で,フォルダ内にある複数のHTMLファイルから特定の文字列を検索し,抽出するコードを作成したいのですが,うまくいきません.
使っているExcelが2007なのでFileSearchを使うことができません.
一応,再帰処理を実装してファイルを探索するところまでは出来ている…と思います.(特定のフォルダを探しに行って○個見つかりましたとメッセージは出ます)
その後のファイルを開き検索,特定のシートに抽出することができません.

現在作成しているコードでは,検索条件が1つしかないのですが,
実際は,HTMLファイルで使用している画像ファイル名を検索して抽出したいので,条件も複数指定したいと思っています(jpg,gif,pdfなど).

ExcelVBAを学び始めて日が浅いため作業が止まってしまっています.きっと調べ方も悪いのでしょうが….
どうか教えていただけましたら幸いです.

A 回答 (1件)

File名を取得するところまでは出来ていると思いますので



Open File名 For Input As #1
While Not EOF(1)
 Input #1, d
'"*.gif" を検索するなら
 If InStr(d, ".gif") > 0 Then
Debug.Print d
 End If
Wend
Close 1
で File File名 内の 文字列 gif の含まれる
テキストd が出力できます。

この回答への補足

すみませんっ,ちょっといじったら,ちゃんと出力されました!
ありがとうございます

補足日時:2011/01/27 00:14
    • good
    • 0
この回答へのお礼

回答ありがとうございます.遅くなりましてすみません.
今試しに入力してみたところ,エラーは出なかったのですが,Excelセル内に何も入力されません.
ファイル名の取得が出来ていない…ということでしょうか;;

今現在いただいたコードを組み込んでこういうプログラムになっているのですが↓

dir_path = Range("A1")

' 探索したいファイルの拡張子
target_extention = UCase("html")

' 探索
Set found_files = FileSearch2007(dir_path, target_extention)

' 見つかったファイルに対して
found_num = found_files.Count
If found_num = 0 Then
MsgBox "見つかりません"
Else
MsgBox found_num & "個見つかりました"
End If

For i = 1 To found_num


Open found_files(i) For Input As #1
While Not EOF(1)
Input #1, d
'"*.gif" を検索するなら
If InStr(d, ".gif") > 0 Then
Debug.Print d
End If
Wend
Close 1

Next i
End Sub

最初試行錯誤してエラーが出ている時には,found_files(i)のところにカーソルを合わせると,パスとファイル名が出ていたので,ファイル名は取得出来ていると思っていたのですが…

お礼日時:2011/01/27 00:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!