

他サーバからファイルをダウンロードしようとしてます。日付指定です。タイムスタンプが日付1~日付2の間のファイルをコピーします。元ファイルフォルダにあるファイル全5千個から300個を選びコピーする形となります。
Dim f As Object
Dim FSO As New FileSystemObject
Dim Path1 As String, Path2 As String
Dim filename As String
Path1=’元ファイルのフォルダパス
Path2='ダウンロード先のフォルダパス
filename='コピーしたいファイル名
For Each f In FSO.GetFolder(Path1).Files
If f.DateLastModified >CDate('日付1指定) And f.DateLastModified <CDate('日付2指定) then
If f.Name Like "*" & filename & "*" then
FSO.CopyFile f.Path, Path2, True
End If
End If
Next f
問題点
実際のコピー作業以前に、5千個から条件に該当するファイルを選び出すのに時間が掛かり過ぎます。最初の条件該当が出て1個目コピーが始まるまで5分程度。ほぼ一瞬で終わることを期待してましたが、違いました。一個のコピー時間は現在不明です。
次善の策
一旦バッチファイルに以下のように出力すると、待ち時間なくコピー開始されます。
xcopy path1\*finename path2\ /d:月-日-年
しかし1個当たりのコピー時間が4秒と長いです。さらに日付は日付1しか指定出来ません。つまり○月×日以降のファイルを全部コピーします。
要は、速く期間指定でコピーしたいのです。何か良い方法はないでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ScriptingFilesystem で試してみましたが
どんぐりの背比べ・・のような結果。
NAS上の1フォルダ中に320個のファイルがあるところでやってみました。
コピーしていませんので約4秒。
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Sub てすと1()
Dim f As Object, fDate As Date
Dim FSO As FileSystemObject
Dim Path1 As String, Path2 As String
Dim fileName As String
Dim 日付1指定 As Date, 日付2指定 As Date
Dim tK As Long, i As Long
tK = GetTickCount
Set FSO = New FileSystemObject
Path1 = "m:\" '元ファイルのフォルダパス
Path2 = "" 'ダウンロード先のフォルダパス
fileName = "A" 'コピーしたいファイル名
日付1指定 = #1/1/2010#
日付2指定 = #1/1/2015#
For Each f In FSO.GetFolder(Path1).Files
fDate = f.DateLastModified
If fDate > 日付1指定 And fDate < 日付2指定 Then
If f.Name Like "*" & fileName & "*" Then
i = i + 1
'FSO.CopyFile f.Path, Path2, True
End If
End If
Next f
Set FSO = Nothing
Debug.Print i, GetTickCount - tK
End Sub
FSO.CopyFile ではなく、VBA の FileCopy メソッドだとどうかな?
目くそ鼻くそかもしれません。。。
No.2
- 回答日時:
まあ
> 1個当たりのコピー時間が4秒と長いです
というのがネットワーク間のコピー速度の限界ぽいので焼け石に水かもしれませんが、
> 5千個から条件に該当するファイルを選び出すのに時間が掛かり過ぎます
については
CDate('日付1指定)、CDate('日付2指定)、"*" & filename & "*"
をループ中で毎回生成しているのがちょっと気になります。ループの外で変数を宣言してそれに上記の値を代入し、ループ中ではその変数と f.DateLastModified を比較してみたらいかがでしょうか。
No.1
- 回答日時:
robocopy で出来きそうですが、すみません未検証です。
以下ヘルプの一部抜粋です。
/S :: サブディレクトリをコピーしますが、空のディレクトリはコピーしません。
/MAXAGE:n :: 最長ファイル有効期間 - n 日より古いファイルを除外します。
/MINAGE:n :: 最短ファイル有効期間 - n 日より新しいファイルを除外します。
n を絶対日?に指定できなさそうなので
/maxage:5
/minage:2
のようにしなくちゃダメっぽいです。
ありがとうございます。
どちらかと言うと継続的な丸コピーのためのコマンドのようですね。他に手がなければやってみますが、出来れば避けたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
VB6でのファイルコピーの終了検知について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
バッチファイル XCOPYで上書き...
-
frxファイルの役目
-
アクセス クエリを別のファイ...
-
エクセルのハイパーリンクがコ...
-
同じファイル名 上書きしないフ...
-
[エクセル]コピーするとオブジ...
-
バッチファイルのコピーで
-
エクセルVBAで開いているファイ...
-
Vba初心者です。下記のコード助...
-
xcopyでのバッチコピー方法でコ...
-
バッチファイル 別ファイルにリ...
-
エクセルのマクロについて教え...
-
vbsでExcelのシートをコピーす...
-
バッチでサブフォルダ内のファ...
-
FTPとファイルコピーの違いにつ...
-
VB6で、Form1をコピーする方法...
-
ファイルサーバ上のファイルが...
-
パワポでスライドをコピーでき...
-
指定した時間になったらファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
エクセルのハイパーリンクがコ...
-
バッチファイル XCOPYで上書き...
-
frxファイルの役目
-
[エクセル]コピーするとオブジ...
-
Vba初心者です。下記のコード助...
-
エクセル2010、図が大きすぎま...
-
アクセス クエリを別のファイ...
-
ファイルサーバ上のファイルが...
-
同じファイル名 上書きしないフ...
-
バッチファイル 別ファイルにリ...
-
bat 同名ファイルコピー時にリ...
-
xcopyでのバッチコピー方法でコ...
-
バッチファイルのコピーで
-
vbsでExcelのシートをコピーす...
-
現在のブックを閉じないで、マ...
-
DOSコマンドのコピー完了判定
-
ExeclVBAユーザーフォームから...
-
パワポでスライドをコピーでき...
-
FTPとファイルコピーの違いにつ...
おすすめ情報