我正在尝试将多个 Excel 工作簿复制到一个工作簿中,并且每个复制的工作簿都有自己的选项卡。
我不知道如何使用 VB,所以我尝试使用 Google 找到的许多 VB 脚本,但由于这样或那样的原因(错误 9、错误 91、没有任何反应、所有工作簿都被复制到一个选项卡中)我没有成功完成。
答案1
如果你没有很多工作簿,你可以按照以下步骤手动完成这些说明.相关摘录:
- 右键单击要移动的选项卡并选择
move or copy
- 在下拉列表中选择目标书籍
- 选择目标书中的标签位置
- 点击
ok
如果你有很多工作簿,你可以按照以下步骤实现自动化这些说明。 相关摘录:
- 将所有工作簿放在同一目录中,并记下目录路径
- 打开目标工作簿
- 点击
Developer
->Visual Basic
- 在新窗口中,点击
Insert
->Module
粘贴以下代码:
Sub GetSheets() Path = "<INSERT PATH TO DIRECTORY HERE>" Filename = Dir(Path & "*.xls*") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop End Sub
将该行替换
Path
为包含工作簿的目录的完整路径- 单击
green arrow button
运行代码并合并工作簿。
答案2
这有效 -
Sub CopyBooks()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim destinationWorkbook As Workbook
Set destinationWorkbook = ThisWorkbook
Dim sourceWorkbook As Workbook
Dim sourceWorksheet As Worksheet
Const path As String = "C:\your\path\"
Dim file As Variant
Dim currentSheets As Long
currentSheets = destinationWorkbook.Sheets.Count
file = Dir(path & "*.xl*")
While file <> ""
Set sourceWorkbook = Workbooks.Open(path & file)
For Each sourceWorksheet In sourceWorkbook.Worksheets
sourceWorksheet.Copy after:=destinationWorkbook.Worksheets(currentSheets)
currentSheets = currentSheets + 1
Next
sourceWorkbook.Close savechanges:=False
file = Dir
Wend
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub