仅将多个工作簿的第一个工作表合并到一个工作簿?

时间:2020-01-22 10:13:52

标签: excel vba

我想通过从窗口弹出窗口中选择多个文件来将它们组合成一个文件,因为文件数量经常变化。 在我的文件中,我总是需要第一张纸。是否可以更改将CurrentSheet始终设置为(1)的循环? 我只了解VBA基础知识。

Sub GetSheets()
    Dim fnameList, fnameCurFile As Variant
    Dim countFiles, countSheets As Integer
    Dim wksCurSheet As Worksheet
    Dim wbkCurBook, wbkSrcBook As Workbook

    fnameList = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Choose files", MultiSelect:=True)

    If (vbBoolean <> VarType(fnameList)) Then

        If (UBound(fnameList) > 0) Then
            countFiles = 0
            countSheets = 0

            Application.ScreenUpdating = False
            Application.Calculation = xlCalculationManual

            Set wbkCurBook = ActiveWorkbook

            For Each fnameCurFile In fnameList
                countFiles = countFiles + 1

                Set wbkSrcBook = Workbooks.Open(fileName:=fnameCurFile)

                For Each wksCurSheet In wbkSrcBook.Sheets
                    countSheets = countSheets + 1
                    wksCurSheet.Copy After:=wbkCurBook.Sheets(wbkCurBook.Sheets.Count)
                Next

                wbkSrcBook.Close SaveChanges:=False

            Next

            Application.ScreenUpdating = True
            Application.Calculation = xlCalculationAutomatic

            MsgBox vbCrLf & "Combined " & countSheets & " sheets", Title:="Done"
        End If

    Else
        MsgBox "No files", Title:=""
    End If
End Sub

0 个答案:

没有答案