我有一个宏,可以复制工作表然后将其保存为新的。
但是,我想复制两个工作表然后将它们合并为一个,但工作表位于两个不同的工作簿中。
例如:workbook1 包含 2 个工作表 (worksheet1, worksheet2) workbook2 包含 3 个工作表 (worksheet1, worksheet2, worksheet3)
我想从工作簿 1 中复制工作表 1,从工作簿 2 中复制工作表 1。然后将它们合并,因为它们都具有相同的表格格式。
我不知道怎么做。我只知道如何从同一工作簿复制多个工作表。我也知道如何合并它们,我唯一的问题是如何从不同的工作簿(即工作簿 1 和工作簿 2)复制工作表 1
我只有用于复制数据的简单代码。顺便说一下,这是我的代码:
saveFolder = "C:\Document\Macro"
path = "C:\Document\Workbook1"
fname = "Sample Account.xlsx"
Workbooks.Open path & fname
Sheets("Account1").Copy
ActiveWorkbook.SaveAs saveFolder & "\Conso.xlsx", FileFormat:=51
Workbooks(fname).Close
另一个文件位于文件夹中工作簿2它的文件名是附加帐户
答案1
此 VBA(宏)代码将帮助您从源工作簿中复制您选择的工作表以合并到活动簿中。
该代码是交互式的,而非标准代码,这使得代码用途广泛。
Sub CombineSheets()
Dim sPath As String
Dim sFname As String
Dim wBk As Workbook
Dim wSht As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
sPath = InputBox("Enter File Path Of Source Workbook(s)")
ChDir sPath
sFname = InputBox("Enter the Filename")
sFname = Dir(sPath & "\" & sFname & ".xl*", vbNormal)
wSht = InputBox("Enter Worksheet Name To Copy")
Do Until sFname = ""
Set wBk = Workbooks.Open(sFname)
Windows(sFname).Activate
Sheets(wSht).Copy Before:=ThisWorkbook.Sheets(1)
wBk.Close False
sFname = Dir()
Loop
ActiveWorkbook.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
怎么运行的:
- 将此代码复制并粘贴为带有主工作簿(您想要合并工作表)的标准模块。
- 运行宏。
- 首先,它要求提供源工作簿的路径。
笔记,最好复制并粘贴文件路径。
然后询问工作簿的名称,您也可以使用通配符,或者像工作簿的名称
Myworkbook
。最后,它要求复制 Sheet Name。