将数据从多个工作簿的工作表(名称包含“ SAP”)复制到一个工作表中

时间:2018-10-09 13:22:10

标签: excel vba copy runtime-error

我想要工作表名称包含“ SAP”的工作表中的合并数据。我已经编写了一些代码来执行此操作,但是每次运行都会得到Run-time error '438'。这只是我的代码的开始,但是不起作用:(

Private Sub MergeFiles()
    Dim ws As Worksheet
    Dim xPath As String

    xPath = ActiveWorkbook.Path & "\"
    Filename = Dir(xPath & "*.xlsx")

    Do While Filename <> ""

        Workbooks.Open Filename:=xPath & Filename, ReadOnly:=True
        For Each ws In Workbooks(Filename)
            If LCase(ws.Name) Like "SAP*" Then
                Sheets(ws).Activate
                Range("A2:L85").Select
                Selection.Copy
            End If
        Next ws

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

End Sub

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以将FOR语句替换为以下内容,它应该可以正常工作。

您要访问工作簿中的工作表,因此需要参考工作表。

For Each ws In Workbooks(Filename).Worksheets