Excel 将多个文件(每个文件存放在单独的文件夹中)整理到一个文件夹中

Excel 将多个文件(每个文件存放在单独的文件夹中)整理到一个文件夹中,excel,vba,Excel,Vba,我需要将20多个文件复制到一个文件夹中,每个文件由唯一的文件夹存放。我知道这应该相当简单。我已经创建了下面的代码,但是我一直得到一个编译错误:objectrequired错误框。下面的代码看起来很合理,所以我真的很难找到错误所在 文件夹名是报告的日期,例如090118,因此,我决定使用循环直到931月底。我还添加了一个错误处理代码,这样我们就可以跳过假期和周末 Sub CopyFiles() Dim NewFolder As String Dim NDay As Long

我需要将20多个文件复制到一个文件夹中,每个文件由唯一的文件夹存放。我知道这应该相当简单。我已经创建了下面的代码,但是我一直得到一个编译错误:objectrequired错误框。下面的代码看起来很合理,所以我真的很难找到错误所在

文件夹名是报告的日期,例如090118,因此,我决定使用循环直到931月底。我还添加了一个错误处理代码,这样我们就可以跳过假期和周末

Sub CopyFiles()

    Dim NewFolder As String
    Dim NDay As Long
    Dim FileName As String
    Dim Month As Variant


    Month = InputBox("Enter month, eg. 01-January")
    NewFolder = "C:\Results\Trading\2018\" & Month & "\Backtest Daily Files\Daily GS\" 'Don't forget to edit this
    NDay = 901

    On Error Resume Next

    Do While NDay < 931


        FileName = Dir("C:\Reports\2018\" & Month & "\0" & NDay & "18\GS_Futures*.cs*")

        FileCopy FileName, NewFolder

        NDay = NDay + 1

    Loop

End Sub

Dir不返回完整路径。它要么仅在找到时返回文件名,要么在未找到时返回零长度字符串。如果需要确定的路径和文件名引用,则需要在返回的字符串前面加上文件夹前缀

例如

...
Do While NDay < 931
    FileName = Dir("C:\Reports\2018\" & Month & "\0" & NDay & "18\GS_Futures*.cs*")

    if cbool(len(filename)) then _
        FileCopy "C:\Reports\2018\" & Month & "\0" & NDay & "18\" & FileName, NewFolder

    NDay = NDay + 1
loop
...

在我看来,在C:\Reports\2018\中执行递归文件夹搜索会更容易,但这只是一个问题。依靠用户无误地键入静态输入(如1月1日)是愚蠢的。

找到了解决方案。需要一些调整,但我现在已经准备好了。感谢所有努力帮助我们的人。问题是我没有给目的地指定文件名,只是给了文件夹no.csv

Sub CopyFiles()

Dim NewFolder As String
Dim NDay As Long
Dim FileName As String
Dim Month As String


Month = InputBox("Enter month, eg. 01-January")
NDay = 901

On Error Resume Next

Do While NDay < 931


    FileName = "M:\MRL\2018\" & Month & "\0" & NDay & "18\GS_Futures_0" & NDay & "18.csv"
    NewFolder = "M:\RMC reports\Trading\2018\" & Month & "\Backtest Daily Files\Daily GS\GS_Futures_0" & NDay & "18.csv"


    FileCopy FileName, NewFolder


    NDay = NDay + 1

Loop

End Sub