我有超過5 個具有相同格式的Excel文件,它們的列標題相同,并且都放置在同一文件夾,有什么快速的方法將它們合并到一個單獨的Excel文件的一個工作表中?
假設工作簿文件結構如下所示。
其中,在文件夾“要合并的工作簿文件”中vba快速合并多個工作表,有3個示例工作簿文件“測試1.xls、測試2.xls、測試3.xls”,將它們合并到工作簿“合并.xls”中。
在“合并.xls”工作簿中,有三個工作表。其中,“設置”工作表中的單元格B2中的數據為每個工作簿中想要合并的工作表名,這里假設每個工作簿中的工作表名相同;單元格B3為要合并的數據開始的行號。
在“導入工作簿名”工作表中將放置合并的工作簿的名稱。
“合并工作表”就是我們要放置合并的數據的工作表。
完整的VBA代碼如下:
‘ 放置導入工作簿名稱的工作表
Const = “導入工作簿名”
‘放置合并數據的工作表
Const = “合并工作表”
‘ 放置導入工作簿名稱的行號
As Long
Sub main()
Dim As
= (“想要運行合并程序嗎?” & vbCr & _
“這將擦除” & & “工作表中已前合并的數據”, _
+ +, “合并處理”)
If = vbYes Then
Call
End If
End Sub
Sub ()
‘ 合并數據的工作簿
Dim As
‘ 包含工作簿完整路徑和文件名的數組
Dim As
‘ 當前的工作簿文件路徑和文件名
Dim xls As
‘ 工作簿文件中(通用的)工作表名
Dim As
‘ 復制數據開始的行號
Dim As Long
‘ 粘貼數據開始的行號
Dim As Long
On Error GoTo
‘ 幫助加快代碼處理速度
. = False
. =
=Range(“e”)
= Range(“”)
Set = (.Name)
= .( _
“ Excel工作簿(*.xls*), *.xls*”, , _
“選擇要合并的文件”, , True)
. = False
‘ 如果用戶沒有點擊取消按鈕
If () Then
().
=
‘重置 & 清除數據
=
.().Cells.Clear
.().Rows( & “:” &.Rows.Count).Clear
For Each xls In
If .
Call (, xls,, , )
End If
Next xls
“處理成功”, + ,”合并程序”
End If
Exit Sub
: ‘ 錯誤處理
.
Call
“錯誤號: ” & Err. & vbCr & _
“錯誤說明: ” & _
Err., +, _
“合并工作簿錯誤報告”
End Sub
Sub ( As Long, ByVal xls As , _
ByVal , _
ByVal , ByVal As Long)
‘ 打開的工作簿對象
Dim As
‘ 工作表中最后一個數據單元格所在的行
Dim As Long
‘ 打開工作簿
.Open (xls)
Set = (.Name)
With .()
.
= ()
If > Then
.Rows( &”:” & ).Copy _
.().Range(“A” & )
= + ( -) + 1
‘ 導入數據的工作簿名
= + 1
.().Range(“A”& ) = .Name
End If
End With
‘ 關閉工作簿
(.Name).:=False
End Sub
()
=
If .(Cells) > Then
‘按行向后搜索
=Cells.Find(What:=”*”, After:=[a1], _
:=, _
:=).Row
End If
End
Sub ()
‘ 重置應用程序屏幕刷新和計算模式
. = True
. =ic
End Sub
運行main過程,彈出如下所示的對話框。
選擇“是”按鈕vba快速合并多個工作表,彈出如下所示的選擇文件對話框。
導入到要合并的工作簿所在的文件夾,選擇要合并的工作簿文件,單擊“打開”按鈕。如果一切順利,則合并數據完成,并彈出如下所示的信息。
我們可以查看結果。在“導入工作簿名”工作表中,列出了已經合并數據的工作簿名,如下所示。
在“合并工作表”工作表中,是合并后的數據,如下所示。