vba 快速合并当前文件夹内多个excel的指定工作表到同一个excel的同名工作表并打开,可避免下标越界
时间: 2023-07-29 18:11:38 浏览: 146
excel如何快速把多个工作表合并到一个excel表优质资料.doc
好的,你想要将之前的 VBA 代码改进一下,实现在合并完工作表后自动打开合并后的 Excel 文件,同时也避免下标越界。可以使用以下代码实现:
```vba
Sub MergeWorksheetsAndOpen()
Dim Path As String, Filename As String, Sheet As Worksheet
Dim i As Integer, j As Integer, k As Long
Dim targetSheet As Worksheet
Dim targetWorkbook As Workbook
Application.ScreenUpdating = False
'获取当前文件夹路径
Path = ThisWorkbook.Path & "\"
'设置目标工作簿
Set targetWorkbook = Workbooks.Add
Set targetSheet = targetWorkbook.Sheets(1)
targetSheet.Name = "合并工作表"
'循环当前文件夹内的所有文件
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
'打开当前文件
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
'循环当前文件内的所有工作表
For i = 1 To Worksheets.Count
'查找同名工作表
For j = 1 To targetWorkbook.Worksheets.Count
If targetWorkbook.Worksheets(j).Name = Worksheets(i).Name Then
'合并工作表
For k = 1 To Worksheets(i).UsedRange.Rows.Count
targetWorkbook.Worksheets(j).Range("A" & targetWorkbook.Worksheets(j).UsedRange.Rows.Count + k) _
.Value = Worksheets(i).Range("A" & k).Value
Next k
Exit For
End If
Next j
Next i
'关闭当前文件
Workbooks(Filename).Close
'获取下一个文件名
Filename = Dir
Loop
'保存目标工作簿并打开
targetWorkbook.SaveAs Filename:="合并工作表.xlsx", FileFormat:=51
targetWorkbook.Close
Workbooks.Open Filename:="合并工作表.xlsx"
Application.ScreenUpdating = True
End Sub
```
以上代码会循环当前文件夹内的所有 Excel 文件,合并指定工作表到同一个 Excel 的同名工作表中,并将合并后的 Excel 文件保存并打开。你只需要将代码中的文件路径和工作表名称修改为你自己的即可。
希望能够帮到你!
阅读全文