怎么能把多个excel文件中的sheet1,合并到一个文件簿中,sheet2不合并

几十个excel文件中的有sheet1、sheet2,sheet3,把几十个excel文件中的sheet1合并一个excel里sheet1,

新建个工作薄 放到所有文件一个文件夹里  Alt+F11 视图  代码窗口 

代码丢进去 F5运行

Sub 遍历当前文件夹下工作薄()
  Dim i, r, wk As Workbook, sh As Worksheet, rr
  t = Timer
  Application.ScreenUpdating = False
  ActiveSheet.Range("2:60000").ClearContents
        p = ThisWorkbook.Path & "\"
        s = Dir(p & "*.xls*")
    Do While s <> ""
          If s <> ThisWorkbook.Name Then
            Set wk = Workbooks.Open(p & s)
            Set sh = wk.Sheets("Sheet1")  '收集Sheet1
            r = sh.[a65536].End(3).Row
    For i = 2 To r
       With ThisWorkbook.Worksheets("sheet1") '收集到Sheet1
      rr = ThisWorkbook.Worksheets("sheet1").[a65536].End(xlUp).Row + 1
        For j = 1 To 30
          Cells(rr, j).Value = sh.Cells(i, j)
          Cells(rr, 31) = wk.Name
        Next j
      End With
    Next i
     wk.Close False
         End If
           s = Dir
      Loop
  t1 = Timer - t
MsgBox ("所有工作薄收集完成,用时" & t1 & "秒")
Application.ScreenUpdating = True
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-10-09
用一个VBA就可以实现的。

使用方法:
1、新建一个工作薄,将其命名为你合并后的名字。
2、打开此工作薄。
3、在其下任一个工作表标签上点击右键,选择“查看代码”。
4、在打开的VBA编辑窗口中粘贴以下代码:
Sub 工作薄间工作表合并()

Dim FileOpen
Dim X As Integer
Application.ScreenUpdating = False
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(*.xls),*.xls", MultiSelect:=True, Title:="合并工作薄")
X = 1
While X <= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
X = X + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub

errhadler:
MsgBox Err.Description
End Sub

5、关闭VBA编辑窗口。
6、在excel中,工具---宏---宏,选“工作薄间工作表合并”,然后“执行”。
7、在打开的对话窗口中,选择你要合并的300个工作薄。本回答被网友采纳