如何将一个文件夹中多个Excel工作簿上除工作表1和2之外的所有工作表复制到另一工作簿中

如果有人在这里帮助我解决这个我找不到解决方法的问题(对不起,我的英语不好),我非常感谢。

所以我在一个文件夹中有多个excel。其中的每个excel格式都相同,第一张纸作为每张纸的参考,第二张纸用于合并数据,第三张纸和其余用于合并数据的纸张。文件夹中的每个excel都有不同数量的工作表。

我想做的是我想将范围从A27:AJ500的数据(从第3张纸开始)复制到每张纸上,然后复制到sheet1中的另一个新工作簿中,然后将其从单元格A27开始反复粘贴到底部,并为每个excel循环在文件夹中。

我没有足够的能力来编写自己的脚本,但我设法理解了一些并将其组合到此脚本中。

Sub Download_Data()

Path = "C:\Users\ASUS\Desktop\Done\"
Filename = Dir(Path & "*.xlsm")

'to open every excel in my folder
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True '--> i only managed to do it right till here

'supposed to copy range in every sheet of excel in my folder into different workbook
For Each ws In thiswoorkbook.Worksheets '--> i try write this code but i am confused to do what i want from here and i know this code is nowhere near true
    With ws
        If .Name <> "GABUNGAN" Then
        range("A27:AJ500").Select
        Selection.copy
        Workbooks("Tes.xlsm").range("A27").PasteSpecial Paste:=xlPasteValues
        End If
    End With
Next ws

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

Application.Goto ActiveWorkbook.Sheets("sheet1").range("A1")

End Sub

我一直在寻找代码,不仅我无法自定义此代码,而且我无法理解代码中的错误,因此我写了这个问题。任何帮助将不胜感激,在此先感谢您的关注,希望您平安无事。

评论
  • 情话与狗
    情话与狗 回复

    试试这个:(未测试)

    Dim sourcewb As Workbook
    Dim destwb As Workbook
    Dim y As Long
    Dim ws As Worksheet
    
    strPath = "C:\Users\ASUS\Desktop\Done\"
    strFilename = Dir(strPath & "*.xlsm")
    
    y = 27
    Set destwb = ThisWorkbook
    Do While strFilename <> ""
        Set sourcewb = Workbooks.Open(Filename:=strPath & strFilename, ReadOnly:=True)
        For Each ws In sourcewb.Worksheets
            With ws
                If .Name <> "name of reference sheet" And .Name <> "name of consolidation sheet" Then
                    .Range("A27:AJ500").Copy
                    destwb.Range("A" & y).PasteSpecial Paste:=xlPasteValues
                    y = y + (500 - 27) + 1
                End If
            End With
        Next ws
        destwb.Close False
        Filename = Dir()
    Loop