我有70个Excel文件,每个excel工作簿中有10个。
但是每个工作簿都有{ Excel 1: JAN , Feb , March } & { Excel 2 : Jan , Feb , March } & { Excel 3 : Jan , Feb , March }
的相同表格。 Excel保存在一个文件夹中。
如何通过Sheets NAMES整合Excel。我想复制并粘贴数据,如表格JAN到JAN,FEB到FEB,3月到3月。使用VBA宏或任何其他方法一次性按名称合并或复制并粘贴所有Excel工作表。
答案 0 :(得分:0)
您可以尝试以下代码。
Sub simpleXlsMerger()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As
Object
Application.ScreenUpdating = False
Workbooks.Open Filename:="D:\Automation Tool\Report - Template.xlsx"
Windows("Report - Template.xlsx").Activate
With ActiveWorkbook
Worksheets("Lev Report").Activate
End With
Rows("2:" & Rows.Count).ClearContents
Range("A2").Select
Set mergeObj = CreateObject("Scripting.FileSystemObject")
'change folder path of excel files here
Set dirObj = mergeObj.Getfolder("D:\Automation Tool\Leave Report\Leave File")
Set filesObj = dirObj.Files
For Each everyObj In filesObj
Set bookList = Workbooks.Open(everyObj)
'change "A2" with cell reference of start point for every files here
'for example "B3:IV" to merge all files start from columns B and rows 3
'If you're files using more than IV column, change it to the latest column
'Also change "A" column on "A65536" to the same column as start point
Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy
Windows("Leave Report - Template.xlsx").Activate
ActiveWorkbook.Worksheets(2).Activate
'Do not change the following column. It's not the same column as above
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
bookList.Close
Next
Call ChangeCaches
End Sub
答案 1 :(得分:0)
在运行脚本之前,需要设置配置(MergeExcel.txt)文件。在Windows资源管理器中,按住shift键并右键单击要合并的文件,然后选择“复制为路径”。将路径粘贴到MergeExcel.txt文件中。该文件中的每个文件都是要合并的excel文件的路径。配置必须与VBS脚本位于同一文件夹中。
c:\folder1\Excel1.xlsx
c:\folder1\Excel2.xlsx
c:\folder3\Excel3.xlsx
双击运行MergeExcel.vbs。该脚本将读取位于同一文件夹中的MergeExcel.txt文件,并将所有工作表导入到一个工作簿中。该脚本使用VBA打开Excel并导入工作表。
Set fso = CreateObject("Scripting.FileSystemObject")
sFolderPath = GetFolderPath()
sFilePath = sFolderPath & "\MergeExcel.txt"
If fso.FileExists(sFilePath) = False Then
MsgBox "Could not file configuration file: " & sFilePath
WScript.Quit
End If
Dim oExcel: Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oExcel.DisplayAlerts = false
Set oMasterWorkbook = oExcel.Workbooks.Add()
Set oMasterSheet = oMasterWorkbook.Worksheets("Sheet1")
oMasterSheet.Name = "temp_delete"
oMasterWorkbook.Worksheets("Sheet2").Delete
oMasterWorkbook.Worksheets("Sheet3").Delete
Set oFile = fso.OpenTextFile(sFilePath, 1)
Do until oFile.AtEndOfStream
sFilePath = Replace(oFile.ReadLine,"""","")
If fso.FileExists(sFilePath) Then
Set oWorkBook = oExcel.Workbooks.Open(sFilePath)
For Each oSheet in oWorkBook.Worksheets
oSheet.Copy oMasterSheet
'oSht.Move , oSheet
Next
oWorkBook.Close()
End If
Loop
oFile.Close
oMasterSheet.Delete
MsgBox "Done"
Function GetFolderPath()
Dim oFile 'As Scripting.File
Set oFile = fso.GetFile(WScript.ScriptFullName)
GetFolderPath = oFile.ParentFolder
End Function