yakoni8585
@yakoni8585

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VBAを用いたexcelファイルの検索

解決したいこと

excelファイルを探す手間を省けるように文字列を打ち込んだらその文字列を含んだexcelファイルのディレクトリが出力されるマクロをexcelのvbaで実装しようとしていますが、うまくいきません。

参考にしているソースコードは以下のURLのブログに掲載されています。
https://lemon818.com/excel-filelist/

URLに貼ってあるソースコードを参考に実装を試みていますが、文字列を打ち込んだらその文字列が含まれているファイルが開かれて、文字列が含まれているexcelファイルのディレクトリが出力されません。
どのようにすれば文字列からexcelファイルのディレクトリを検索することができるのでしょうか。

なお、使用しているexcelは2016年版です。
一人でも多くの方のご助力を心からお願いいたします。

自分で試したこと

VBAに関する学習も兼ねて、「解決したいこと」に貼ってあるURLに書かれているソースコードを参考に、excelのサブディレクトリ配下を含めたexcelファイルの文字検索のマクロの実装を試しています。

0

3Answer

環境情報にエクセルと明記してました。頓珍漢な質問をしてごめんなさい

上記コードより fileのforの位置を変えてます。

Function roopAllFiles(、、、
 For Each folder In fso.getFolder(inputFolder).SubFolders
   正規表現でfolder.name を検索し、sheetへ出力 ←ここCall の前かも?
   For Each file In fso.getFolder(inputFolder).Files
                                ↑ここ folder かも?
       正規表現でfile.name を検索し、sheetへ出力  
   Next
     Call roopAllFiles(folder.Path, fso)
 Next

再帰定義でフォルダの下階層へ侵入しつつ
同階層にファイルを検索し、正規表現で file.Name folder.nameの文字列を判定ではどうでしょうか?

1Like
    For Each fileName In fso.GetFolder(searchFolderPath).Files
        If fileName Like "*.xls?" Then '追加
        slashNum = InStrRev(fileName.Path, "\")
        Cells(start_y, start_x).Value = Mid(fileName.Path, slashNum + 1)
        Cells(start_y, start_x + 1).Value = Left(fileName.Path, slashNum - 1)
        Cells(start_y, start_x + 2).Value = Format(fileName.Size / 1024, "0.#0000") & " バイト"
        Cells(start_y, start_x + 3).Value = fileName.DateCreated
        Cells(start_y, start_x + 4).Value = fileName.DateLastModified
        start_y = start_y + 1
        End If
    
    Next

ソース全部読んでは無いですけどこういう話ではなく?

1Like

にて With Application. の記述があり
残念なことに、excel vba のサンプルです。

純粋な cScript でないと思います。
 
@yakoni8585 さんの環境はexcelは使えますか?   訂正 エクセルと明記してました

0Like

Comments

  1. @yakoni8585

    Questioner

    Excelは使えますね。

Your answer might help someone💌