如何将多个Excel工作簿中的数据合并到主工作簿中并消除重复的追加?

时间:2018-12-14 06:45:20

标签: excel vba excel-vba

我在将数据从其他工作簿合并到主工作簿并使用文件名和路径名是变量的同时陷入VBA问题,该变量在循环中动态变化,但是我只找到硬编码的路径,因此我以下是我的代码。

Sub Append()

    'Append data from other files
    Path = "E:\NPM PahseIII\"
    Dim c As Range

    'find the first empty cell in ColA
    Set c = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(2, 0)
    Filename = Dir(Path & "*.xlsx")

    Do While Filename <> ""
        If InStr(Filename, ".") > 0 Then
            Filenamenoext = Left(Filename, InStr(Filename, ".") - 1)
        End If

        c.Value = Filenamenoext
        Set c = c.Offset(1, 0)
        Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
        Windows("Master sheet").Activate
        Selection.Consolidate Sources:=Array("'Path & [Filename]Sheet1'!$B$2:$B$5"), 
        Function:=xlSummary

        Workbooks(Filename).Close
        Filename = Dir()
    Loop

End Sub

第一个问题是该程序给我错误

Object doesn't support this property or method

在此行

Selection.Consolidate Sources:=Array("'Path & [Filename]Sheet1'!$B$2:$B$5"), 
Function:=xlSummary

第二,我希望当其他文件数据没有变化时,如果再次通过运行代码再次添加数据,那么代码不应再次添加重复项。

1 个答案:

答案 0 :(得分:0)

请注意,在该字符串"'Path & [Filename]Sheet1'!$B$2:$B$5"中,PathFilename不会被视为变量,而是硬编码字符串!

您必须使用类似

"'" & Path & "[" & Filename & "]Sheet1'!$B$2:$B$5"

如果要使用变量值。

根据Range.Consolidate method的文档,xlConsolidationFunction的常量不是Function:=xlSummary而是Function:=xlSum

还要注意,Selection的定义非常不确定,可以在工作表中的任何位置。我建议您阅读How to avoid using Select in Excel VBA并参考您的范围,工作簿等,而完全不使用.Activate.SelectSelection.