合并多个格式相同XLS的方法

it2025-03-22  19

        作者:黄启清         日期:08-3-17         说明:可以将当前XLS宏运行所在目录的所有XLS全部合并到一个XLS文件里面         Dim curBook     As Workbook         Dim curSheet     As Worksheet         Dim row     As Integer         Dim strPath As String         Dim strResultFile As String         Dim bIsFirst As Boolean                         Application.DisplayAlerts = False '取消警告信息         Application.ScreenUpdating = False '禁止屏幕刷新         bIsFirst = False         On Error GoTo ErrMsg               '  strResultFile = InputBox("请输入你合并后的文件名称,不用输入扩展名!", "提醒", "ALL-XLS")                ' If strResultFile = "" Then                 '    MsgBox "你已经取消了此次的操作!", vbInformation          '   Exit Sub                 'End If                         strResultFile = "ALL-XLS" & ".XLS"                                 Set curBook = Workbooks.Add                 If Dir(ThisWorkbook.Path & "\" & strResultFile) <> "" Then                     If MsgBox("文件""" & strResultFile & """已经存在,你确认覆盖?!", vbYesNo + vbInformation, "提示") <> vbYes Then                 curBook.Close                 Exit Sub             End If             Kill ThisWorkbook.Path & "\" & strResultFile                     End If                 curBook.SaveAs ThisWorkbook.Path & "\" & strResultFile                 Set curBook = Workbooks(strResultFile)         Set curSheet = curBook.Sheets(1)         row = 1         strPath = UCase(Dir(ThisWorkbook.Path & "\*.xls"))                 While strPath <> ""                         If strPath <> strResultFile And strPath <> UCase(ThisWorkbook.Name) Then                                         strPath = ThisWorkbook.Path & "\" & strPath                         Dim book     As Workbook                         Dim sheet     As Worksheet                         Set book = Workbooks.Open(strPath)                         Set sheet = book.Sheets(1)                         book.Activate                         Set sheet = ActiveSheet                                                 sheet.Range("A1:B1 ").CurrentRegion.Select                         Dim curRow     As Integer                         '有效区域                                                 curRow = row + sheet.Range("A65536").End(xlUp).row + 1                                                 'curRow = row + sheet.Range("A1:B1 ").CurrentRegion.Count                         'curRow = row + sheet.UsedRange.Count                                                                        Selection.Copy                         curBook.Activate                         'MsgBox "currow:" & curRow & " row:" & row                                                                         curBook.Sheets(1).Range("A" & row).Select                         curBook.Sheets(1).Paste                         '按每一个Excel的有效区域进行Copy,并Paste到目标Excel文档                                                If row > 1 Then                             curBook.Sheets(1).Rows(row).Delete '只保留第一个标题部分,删除重复的标题部分                             bIsFirst = True                        End If                                                                                             If Not bIsFirst Then                                                    row = curRow - 1                                                     Else                                                     row = curRow - 2                                                     End If                                                                         book.Close False                                         End If                 strPath = UCase(Dir)         Wend                 MsgBox "合并成功,请查看" & strResultFile & "文档"         curBook.Save         Application.ScreenUpdating = True         Application.DisplayAlerts = True                 Exit Sub         ErrMsg:

        If InStr(Err.Description, "权限") > 0 Then                     MsgBox "VBA在执行过程中发生错误,错误信息如下:" & vbCrLf & vbCrLf & _             "错误来源:" & Err.Source & vbCrLf & _             "错误号码:" & Err.Number & vbCrLf & _             "错误信息:" & Err.Description & vbCrLf & _             "建议方案:请将打开的" & strResultFile & "文件关闭后再重试", vbExclamation                     Else             MsgBox "VBA在执行过程中发生错误,错误信息如下:" & vbCrLf & vbCrLf & _             "错误来源:" & Err.Source & vbCrLf & _             "错误号码:" & Err.Number & vbCrLf & _             "错误信息:" & Err.Description & vbCrLf, vbExclamation                     End If                     If Not (curBook Is Nothing) Then curBook.Close '

转载于:https://www.cnblogs.com/HappyQQ/archive/2008/03/17/1110280.html

相关资源:合并多个XLS文件的工作表
最新回复(0)