エクセルマクロを使用して、
①条件を満たすcsvファイルをコピーし、
②ファイル名を変更し、
③あるフォルダに貼付
したいです。
FileSystemObjectだと処理に時間がかかりすぎるため、PowerShellかWMIのクエリを使用することを検討しています。方法をご教示頂けますと幸いです。
■マクロコード
stt_day = "2021/12/21"(※抽出したい最初の日)
end_day = "2021/12/22"(※抽出したい最後の日)
Set in_files = fso.GetFolder(in_folder_path).Files
For Each in_file In in_files
'元ファイルの更新日時を取得 lst_updt_day = FileDateTime(in_file) '以下条件のファイルを取得しローカルPCにコピー '# 条件1:最終更新日時が指定した期間内 '# 条件2:ファイルサイズが5kb以上 '# 条件3:先頭から4,5文字目が「42」or「61」 '# 条件4:ファイル名の「_」が3個未満 filename = Dir(in_file) underbar_cnt = Len(filename) - Len(Replace(filename, "_", "")) If lst_updt_day >= stt_day And lst_updt_day < (end_day + 1) _ And Round(FileLen(in_file) / 1024, 2) >= 5 _ And (Mid(filename, 4, 2) = "42" Or Mid(filename, 4, 2) = "61") _ And underbar_cnt < 3 _ Then 'リネーム[製番_バッチNo._検査種類_品種_設備No.] in_file_name = in_file.Name out_file_name = Mid(in_file_name, 4, 6) & "_" _ & Mid(in_file_name, 10, 4) & "_" _ & ins_type(i, 1) & "_" _ & hinsy(i, 1) & "_" _ & "#" & mcno(i, 1) _ & ".csv" FileCopy Source:=in_file.Path _ , Destination:=out_folder_path & "\" & out_file_name Else End If Next in_file
回答1件
あなたの回答
tips
プレビュー