将多个Excel文件合并到一个工作簿中,并复制特定的行

时间:2018-10-08 18:02:30

标签: excel vba excel-vba

我有多个工作簿,我需要将所有工作簿合并到一个新工作簿中的一个工作表中。

我只需要复制多个工作簿上的第一行和最后一行“总计”。

示例:

files1.xlsx files2.xlsx files3.xlsx

files1.xlsx-带有文本“总计”的最后一行在第10行。

files2.xlsx-文本为“总计”的最后一行位于第19行。

files3.xlsx-文本为“总计”的最后一行位于第30行。

(注意:最后一行的位置不固定)

DestFile.xlsx-此文件将是files1到files3的目标文件,仅粘贴到sheet1上。

到目前为止,我在下面有这段代码,但是第二个文件行与第一个文件行重叠。

Sub CombineFiles()

Dim bookList As Workbook Dim mergeObj, dirObj, filesObj, everyObj As Object Dim IRow, i As Long Dim ws As Worksheet Dim tag As String

Application.ScreenUpdating = False

Set mergeObj = CreateObject("Scripting.FileSystemObject")

Set dirObj = mergeObj.GetFolder("D:\CXT\") Set filesObj = dirObj.Files

For Each everyObj In filesObj

    Set bookList = Workbooks.Open(everyObj)

    Set ws = bookList.Worksheets("10052018")
    IRow = ws.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

    For i = 1 To IRow
       tag = ws.Cells(i, 2)
       If tag = "*" Then
        IRow = i
        Exit For
       End If
    Next i

    IRow = IRow - 2

    Range("A3:L" & Range("B" & IRow).End(xlDown).Row).Copy

    ThisWorkbook.Worksheets(1).Activate
    Range("A" & IRow).End(xlUp).Offset(2, 0).PasteSpecial
    Application.CutCopyMode = False
    bookList.Close
Next
End Sub

希望有人可以帮助我。 提前致谢, Yeojz

0 个答案:

没有答案