vba 合并不同excel的不同工作表
时间: 2023-07-28 20:07:32 浏览: 241
以下是一个 VBA 宏示例,可用于合并不同 Excel 文件中的不同工作表:
```VBA
Sub MergeWorksheets()
Dim Path As String, Filename As String, Sheet As Worksheet
Dim LastRow As Long, LastColumn As Long, StartRow As Long, StartColumn As Long
Dim DestSheet As Worksheet, DestWorkbook As Workbook, SourceWorkbook As Workbook
'设置目标工作簿和工作表
Set DestWorkbook = ThisWorkbook
Set DestSheet = DestWorkbook.Worksheets("Sheet1")
'设置源工作簿的路径
Path = "C:\MyFolder\"
'循环遍历所有源工作簿
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
'打开源工作簿并复制数据
Set SourceWorkbook = Workbooks.Open(Path & Filename, ReadOnly:=True)
For Each Sheet In SourceWorkbook.Worksheets
If Sheet.Name = "Sheet1" Then '只复制 Sheet1 工作表的数据
LastRow = Sheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Sheet.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
StartRow = DestSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
StartColumn = DestSheet.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column + 1
Sheet.Range(Sheet.Cells(1, 1), Sheet.Cells(LastRow, LastColumn)).Copy DestSheet.Cells(StartRow, StartColumn)
End If
Next Sheet
'关闭源工作簿
SourceWorkbook.Close False
'获取下一个源工作簿的文件名
Filename = Dir()
Loop
End Sub
```
在上面的代码中,您需要设置以下内容:
- `Path` 变量:指定源工作簿所在的文件夹路径。
- `DestWorkbook` 变量:指定目标工作簿。
- `DestSheet` 变量:指定目标工作表。
- `Sheet.Name` 检查:如果您只想复制特定工作表的数据,请更改名称检查条件。
请注意,上述代码假定您只想复制源工作簿中的 Sheet1 工作表。如果您需要复制其他工作表,请使用不同的变量和循环来遍历它们,并相应地更改名称检查条件。
阅读全文