'使用场景:选取路径下的文件合并到一张汇总表 Sub combine1 () Dim str Dim wb, wb1 As Workbook Dim i, j AsInteger'i用来计算数据源的表有多少行 j用来计算汇总表目前有多少行数据,例如有10行,就从11行开始复制数据' Set sht = ActiveSheet'汇总到当前表 Set wb1 = Workbooks.Add '新建一个文件,并将数据汇总到这个文件的第一张表中 Set sht = wb1.Sheets(1) str = Application.GetOpenFilename(",*.*", , , , True) For i = LBound(str) To UBound(str) Set wb = Workbooks.Open(str(i)) '############################上面是壳子####################################### i = wb.Sheets(1).Range("a65535").End(xlUp).Row 'i用来计算数据源的表有多少行 j = sht.Range("a" & Rows.Count).End(xlUp).Row 'j用来计算汇总表目前有多少行数据 wb.Sheets(1).Range("a2:g" & i).Copy sht.Range("a" & j + 1) '数据源的数据复制到汇总表里面 sht.Range("h" & j + 1).Resize(i - 1, 1) = Split(wb.Name, ".")(0) '从汇总表复制数据那一行开始,用resize往下选i-1行,里面全写上wb名字 '#############################下面是壳子###################################### wb.Close Next EndSub
代码3
1 2 3 4 5 6 7 8 9 10 11 12 13
'使用场景:同一个工作簿的不同工作表数据汇总到一张新建的表中并将表改名 Sub combine () Dim sht As Worksheet Dim i, j, k AsInteger Sheets.Add Set sht = ActiveSheet For i = 2To Sheets.Count j = Sheets(i).Range("a" & Rows.Count).End(xlUp).Row k = sht.Range("a" & Rows.Count).End(xlUp).Row Sheets(i).Range("a2:z" & j).Copy sht.Range("a" & k + 1) Next Sheets(2).Range("a1").EntireRow.Copy sht.Range("a1")sht.Name = "汇总表" EndSub
'使用场景:选中路径下的文件提取到同一张工作簿的不同表中 Sub getsht () Dim str() Dim i AsInteger Dim wb, wb1 As Workbook Dim sht As Worksheet Range("a:z").ClearComments OnErrorResumeNext'这一句加上以后防止点了取消发生的错误 Set wb1 = ActiveWorkbookSet sht1 = ActiveSheet OnErrorResumeNext str = Application.GetOpenFilename("Excel数据文件,*.xls*", , , , True) For i = LBound(str) To UBound(str) Set wb = Workbooks.Open(str(i)) '#######################上面是壳子###################################### ForEach sht In wb.Sheets sht.Copy after:=wb1.Sheets(wb1.Sheets.Count) wb1.Sheets(wb1.Sheets.Count).Name = Split(wb.Name, ".")(0) & sht.Name Next '########################下面是壳子#################################### wb.Close Next EndSub
'使用场景:将不同表中指定单元格内容提取出来,并填写进另外一个新建的工作簿中的工作表 Sub test () Dim arr() Dim wb, wb1 As Workbook Dim i, j AsInteger Dim rng1 As Range Dim SHT As Worksheet Set wb1 = Workbooks.Add '新建一个文件,并将数据汇总到这个文件的第一张表中 Set SHT = wb1.Sheets(1) arr = Application.GetOpenFilename(",*.xls*", , "请选择", , True) If arr(1) <> "False"Then For i = LBound(arr) To UBound(arr) Set wb = Workbooks.Open(arr(i)) j = 0 j = SHT.Range("a" & Rows.Count).End(xlUp).Row SHT.Range("a" & j + 1) = wb.Sheets("报告页").Range("i20" wb.Save wb.Close Next EndIf EndSub