[解決済み】VBAでフォルダー内のファイルをループ処理?
2022-04-05 04:17:16
質問
あるディレクトリのファイル間を vba をExcel 2010で作成しました。
ループの中で、必要になります。
- ファイル名と
- ファイルがフォーマットされた日付。
次のようなコードを書きましたが、フォルダのファイル数が50個以下であれば問題なく動作しますが、そうでない場合はとんでもなく遅くなります(>10000個のファイルがあるフォルダで動作させる必要があります)。このコードの唯一の問題点は、「ファイル」を検索するための操作です。
file.name
は非常に時間がかかります。
動作はするが、あまりにも遅いコード(100ファイルあたり15秒)。
Sub LoopThroughFiles()
Dim MyObj As Object, MySource As Object, file As Variant
Set MySource = MyObj.GetFolder("c:\testfolder\")
For Each file In MySource.Files
If InStr(file.name, "test") > 0 Then
MsgBox "found"
Exit Sub
End If
Next file
End Sub
問題は解決しました。
-
私の問題は、以下の解決策によって解決されました。
Dir
を特定の方法(15000ファイルに対して20秒)で実行し、タイムスタンプのチェックにはコマンドFileDateTime
. - 以下の別の答えを考慮すると、20秒は1秒未満に短縮されます。
解決方法は?
以下は、Function Insteadとしての私の解釈です。
'#######################################################################
'# LoopThroughFiles
'# Function to Loop through files in current directory and return filenames
'# Usage: LoopThroughFiles ActiveWorkbook.Path, "txt" 'inputDirectoryToScanForFile
'# https://stackoverflow.com/questions/10380312/loop-through-files-in-a-folder-using-vba
'#######################################################################
Function LoopThroughFiles(inputDirectoryToScanForFile, filenameCriteria) As String
Dim StrFile As String
'Debug.Print "in LoopThroughFiles. inputDirectoryToScanForFile: ", inputDirectoryToScanForFile
StrFile = Dir(inputDirectoryToScanForFile & "\*" & filenameCriteria)
Do While Len(StrFile) > 0
Debug.Print StrFile
StrFile = Dir
Loop
End Function
関連
-
[解決済み] Doエラーにならないループ
-
[解決済み] SSISのエラーコードです。0x80040E37
-
[解決済み] Excel VBA マクロ。ユーザー定義型が定義されていない
-
[解決済み] "ピボットテーブルのフィールド名が有効ではありません。ピボットテーブルレポートを作成するには、ラベル付き列のリストとして構成されたデータを使用する必要があります」エラー
-
[解決済み] エクセルシートにおけるCSVデータの最大行数について
-
[解決済み] EXCELの複数範囲-範囲ごとに異なる回答が必要
-
[解決済み] Excel VBA Projectのパスワードを解読する方法はありますか?
-
[解決済み] エクセルファイルの正しいcontent-typeは何ですか?重複
-
[解決済み】Excel VBAでSelectを使用しないようにする方法
-
[解決済み] データ列全体の先頭または末尾の空白を削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] VBA関数 - 引数は任意ではない
-
[解決済み] "ピボットテーブルのフィールド名が有効ではありません。ピボットテーブルレポートを作成するには、ラベル付き列のリストとして構成されたデータを使用する必要があります」エラー
-
[解決済み] VLOOKUP 最初の結果の下の行に値があるにもかかわらず、0を返す
-
[解決済み] ExcelでのIF - ELSE IF - ELSE構造
-
[解決済み] "ピボットテーブルのフィールド名が有効ではありません。ピボットテーブルレポートを作成するには、ラベル付き列のリストとして構成されたデータを使用する必要があります」エラー
-
[解決済み] UTF8エンコーディングでExcelからCSVに変換する【終了しました
-
[解決済み] エクセルで、ある変数を一定に保ち、他の変数を行によって変化させる方法
-
[解決済み] MS Excelでバージョン管理をする最適な方法【非公開
-
[解決済み] VBAでグローバル変数を宣言するにはどうしたらいいですか?
-
[解決済み] vbaで文字列の中に二重引用符を入れるにはどうしたらいいですか?