VBA-将多个文件合并到一个工作表中

时间:2020-01-28 09:48:29

标签: excel vba

要创建一个VBA脚本,以将一个文件夹中的多个文件合并为单个文件1工作表。所有文件都将具有相同的标题,因此仅应从第一个文件导入标题。

注意事项:

  • 标题始终位于第一行(只能从第一个文件导入)
  • 每个文件包含1个工作表
  • 每个文件在标题行之后的行数都可能可变
  • 最终结果必须是将所有文件合并为一个带有1个标题行的工作表文件。

这里是我到目前为止的内容:

Sub combineFiles()

'takes contents of files and puts into individual sheets
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
'FolderPath = Environ("userprofile") & "\Desktop\Test\"
FolderPath = Application.ActiveWorkbook.Path & "\"
Filename = Dir(FolderPath & "*.xls")
Do While Filename <> ""
 Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
 For Each Sheet In ActiveWorkbook.Sheets
 Sheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
 Next Sheet
 Workbooks(Filename).Close
 Filename = Dir()
Loop
Application.ScreenUpdating = True

' combine sheets created by above script
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add ' add a sheet in first place
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count ' from sheet 2 to last sheet
Sheets(J).Activate ' make the sheet active
Range("A1").Select
Selection.CurrentRegion.Select ' select all cells in this sheets
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next

End Sub

这使我可以将所有文件都放入1。但是,它似乎是随机执行的,因此,如果我有2个文件,则将它们组合到当前文件中(作为单独的纸)2/3/4次每。 代码的第二部分根本不运行,这是为了将不同的工作表结合在一起。

如果有人可以帮助您找到一种更优雅(更有效)的方式来组合这些文件,将不胜感激。

0 个答案:

没有答案