:尝试打开文件夹中的所有Excel文件,代码在Do While FileName<>之后跳过所有内容。 “”

时间:2018-05-03 10:14:00

标签: excel vba

所以我有点像VBA菜鸟,但是想学习。

我需要我的宏来打开文件夹中的所有Excel文件(数百个)并提取信息,以便在一个页面中汇总所有文件。

经过长时间的搜索,我在msdn.microsoft.com上找到了一个似乎符合我需求的示例代码:

    Sub MergeAllWorkbooks()
    Dim SummarySheet As Worksheet
    Dim FolderPath As String
    Dim NRow As Long
    Dim FileName As String
    Dim WorkBk As Workbook
    Dim SourceRange As Range
    Dim DestRange As Range

    ' Create a new workbook and set a variable to the first sheet.
    Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)

    ' Modify this folder path to point to the files you want to use.
    FolderPath = "C:\Users\...\Desktop\Test_Summary_Folder"

    ' NRow keeps track of where to insert new rows in the destination workbook.
    NRow = 1

    ' Call Dir the first time, pointing it to all Excel files in the folder path.
    FileName = Dir(FolderPath & "*.xl*")

    ' Loop until Dir returns an empty string.
    Do While FileName <> ""
        ' Open a workbook in the folder
        Set WorkBk = Workbooks.Open(FolderPath & FileName)

        ' Set the cell in column A to be the file name.
        SummarySheet.Range("A" & NRow).Value = FileName

        ' Set the source range to be A9 through C9.
        ' Modify this range for your workbooks.
        ' It can span multiple rows.
        Set SourceRange = WorkBk.Worksheets(1).Range("A9:C9")

        ' Set the destination range to start at column B and
        ' be the same size as the source range.
        Set DestRange = SummarySheet.Range("B" & NRow)
        Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _
           SourceRange.Columns.Count)

        ' Copy over the values from the source to the destination.
        DestRange.Value = SourceRange.Value

        ' Increase NRow so that we know where to copy data next.
        NRow = NRow + DestRange.Rows.Count

        ' Close the source workbook without saving changes.
        WorkBk.Close savechanges:=False

        ' Use Dir to get the next file name.
        FileName = Dir()
    Loop

    ' Call AutoFit on the destination sheet so that all
    ' data is readable.
    SummarySheet.Columns.AutoFit
End Sub

我想更改某些部分,例如复制到工作簿中的工作表而不是创建新工作表,并且需要在复制数据之前向工作簿添加带有公式的新工作表,但这些都是奖励问题。第一:

宏只打开一个新工作簿,然后跳过

之后的所有内容
Do While FileName <> "".

有谁知道为什么?

为了澄清, 实际上是测试文件夹中的excel文件。

提前致谢: - )

1 个答案:

答案 0 :(得分:1)

你错过了反斜杠: 尝试

FileName = Dir(FolderPath & "\*.xl*")