🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WMI

WMIは、Windowsのシステムを管理する共通インターフェース。OSやコンピュータに関するインベントリ情報を取得し、設定・管理することが可能です。監視情報のデータ構造をCIMで標準化し、監視対象に関係なく共通のインターフェースを利用できます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

2514閲覧

[vab,PowerShell]ファイルコピーの高速化

yatta-man

総合スコア2

WMI

WMIは、Windowsのシステムを管理する共通インターフェース。OSやコンピュータに関するインベントリ情報を取得し、設定・管理することが可能です。監視情報のデータ構造をCIMで標準化し、監視対象に関係なく共通のインターフェースを利用できます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2021/12/22 02:59

エクセルマクロを使用して、
①条件を満たす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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/12/22 03:03

調べたこと、試したことを質問に追記していただけませんか。
y_waiwai

2021/12/22 03:51

問題が見えません。 なにがどう問題でそれをどうしたいんでしょうか
退会済みユーザー

退会済みユーザー

2021/12/22 04:22

プログラム的にいくら頑張ったところで、最終的にはディスク性能以上のIO速度は出ませんが。高性能なディスクにでも変えた方が早くないですか?
yatta-man

2021/12/22 07:27

試した事は、FileSystemObjectをDirに変更してみました。あまり変わらず。 https://www.excel-chunchun.com/entry/2019/01/03/184325 海外子会社の共有フォルダにあるファイルを、ローカルPCに早くコピーしたい というのが要望です。パスも通っています。 1ファイルをコピーするのに、2,3分かかり、1日に1000ファイル程度コピーするので、 困っており、プログラム的に何とかしようと思いましたが、 少し別のアプローチを検討してみます。
guest

回答1

0

ベストアンサー

処理に掛かる時間は、

[遅い] ネットワーク>ディスク(+入出力インターフェース)>>>メモリ>CPU命令 [速い]

大体こんな感じで、ネットワークやディスクで時間が掛かっているなら、プログラム側はメモリとCPUの間で仕事する事が多いので、多少早くした所で雀の涙です。時間が掛かっているなら、どこがボトルネックになっているかをまず調査してください。

投稿2021/12/22 07:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yatta-man

2021/12/22 08:00

ありがとうございます、まずボトルネック確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問