vba宏命令合并多个excel工作簿至一个excel工作簿的多个工作表
时间: 2025-06-28 10:15:13 浏览: 25
### 使用 VBA 宏合并多个 Excel 工作簿数据至单个工作簿的不同工作表
为了实现这一目标,可以通过编写一段 VBA 代码来遍历指定文件夹下的所有 Excel 文件,并将这些文件的内容复制到新的工作簿中的不同工作表里。下面是一个具体的例子:
#### 步骤说明与代码示例
定义变量用于存储路径和其他必要的属性[^3]。
```vba
Sub MergeWorkbooks()
' 声明变量
Dim SourceFolder As String, FileName As String
Dim wbSource As Workbook, wsSource As Worksheet
Dim wbTarget As Workbook
' 设置源文件夹路径
SourceFolder = "C:\Path\To\Your\Folder\" ' 需要修改成实际的文件夹路径
Set wbTarget = ThisWorkbook ' 当前正在使用的这个工作簿作为目标工作簿
' 打开第一个符合条件的工作簿并初始化循环
FileName = Dir(SourceFolder & "*.xls*") ' 查找Excel文件(支持.xls和.xlsx)
Do While FileName <> ""
If Not (FileName Like "~$*.xls*" Or FileName = ActiveWorkbook.Name) Then
Application.ScreenUpdating = False
' 打开源文件
Set wbSource = Workbooks.Open(Filename:=SourceFolder & FileName)
' 将每个源文件的第一个Sheet复制到目标工作簿的新Sheet中
For Each wsSource In wbSource.Sheets
wsSource.Copy After:=wbTarget.Sheets(wbTarget.Sheets.Count)
' 修改新Sheet名称为原文件名加上序号(防止重名)
On Error Resume Next
With wbTarget.Sheets(wbTarget.Sheets.Count)
.Name = Left(FileName, Len(FileName) - 4) & "_" & wsSource.Index
End With
On Error GoTo 0
Exit For ' 每个文件只取一个Sheet
Next wsSource
' 关闭源文件而不保存更改
wbSource.Close SaveChanges:=False
Application.ScreenUpdating = True
End If
' 继续处理下一个文件
FileName = Dir()
Loop
End Sub
```
此脚本会从给定的`SourceFolder`位置读取所有的`.xls`或`.xlsx`类型的文件,并把它们各自的第一张表格拷贝到当前活动的工作簿内作为一个新的独立表格。注意,在设置`SourceFolder`时应确保其指向的是包含待合并Excel文档的那个特定文件夹;而且该文件夹下不应存在其他无关紧要的Excel文件以免误操作。
阅读全文
相关推荐


















