0

そのため、ドキュメント内のすべてのファイルを開き、各ドキュメントから情報をコピーして貼り付けるコードを VBA で作成しています。コードはすべてのドキュメントを開くように設定されていますが、それ自体です。私のジレンマは、メインファイルが変更された最後の日以降に変更されたドキュメントをコードで開くことです。基本的に、2 つの日付を比較して、1 つの日付を同じままにし、もう 1 つの日付をループごとに変更します (ループごとに新しいドキュメント)。私のコードは以下にあり、どんな助けや提案も大歓迎です。ありがとう!

Sub LoopThroughDirectory()
Dim MyFile As String
Dim erow
Dim Filepath As String
Dim DateMaster As Date
Dim DateReflections As Date

Filepath = "Path of folder where all the documents are"
MyFile = Dir(Filepath)
DateReflections = FileDateTime(Filepath)
DateMaster = FileDateTime("Filepath of master document I'm comparing to")

Do While Len(MyFile) > 0
 If MyFile = "zmasterfile.xlsm" Then
Exit Sub
 If DateReflections < DateMaster Then
Exit Sub
End If

Workbooks.Open (Filepath & MyFile)
Range("B4:N4").Copy
ActiveWorkbook.Close

erow = Sheet1.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Worksheets("Reflections").Range(Cells(erow, 2), Cells(erow, 14))

MyFile = Dir

Loop
End Sub
4

2 に答える 2

1

if ステートメントでサブルーチンを終了しないでください。IF ステートメントを次のように変更することを検討してください。

Sub LoopThroughDirectory()
Dim MyFile As String
Dim erow
Dim Filepath As String
Dim DateMaster As Date
Dim DateReflections As Date

Filepath = "Path of folder where all the documents are"
MyFile = Dir(Filepath)
DateReflections = FileDateTime(Filepath)
DateMaster = FileDateTime("Filepath of master document I'm comparing to")

Do While Len(MyFile) > 0
    DateReflections = FileDateTime(Filepath)
    If MyFile <> "zmasterfile.xlsm" and DateReflections > DateMaster Then

        Workbooks.Open (Filepath & MyFile)
        Range("B4:N4").Copy
        ActiveWorkbook.Close

        erow = Sheet1.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
        ActiveSheet.Paste Destination:=Worksheets("Reflections").Range(Cells(erow, 2), Cells(erow, 14))

    End If

    MyFile = Dir

Loop
End Sub
于 2016-03-10T21:38:54.040 に答える
1

ファイルパスを構築するためDateReflectionsに使用して、ループ内をリセットするだけです。MyFile下記参照。

If MyFile = "zmasterfile.xlsm" Then
Exit Sub

DateReflections = FileDateTime(Filepath & "\" & MyFile)
If DateReflections < DateMaster Then
Exit Sub
End If

余談ですが、サブを完全に終了するのではなく、ファイルをスキップして処理を続行したい場合は、 Exit Subs を次のように置き換えますContinue Do

于 2016-03-10T21:39:46.283 に答える