如何用VBA合并同文件夹中的格式相同的工作表。
发布网友
发布时间:2022-04-23 16:15
我来回答
共4个回答
热心网友
时间:2023-09-15 01:32
我经常用这个修改合并
Sub G22表10日()
Dim SQL0$, strTbl$, i%, thisbookname$, thisheetname$, sName$, cn, sh, rowend&, rng$
Dim Filename As Variant
Dim RefEdit1, RefEdit2, RefEdit3, RefEdit4 As String
Filename = Application.GetOpenFilename("Microsoft Office Excel Files (*.xls), *.xls", , "请选取文件", , True)
If Not IsArray(Filename) Then Exit Sub
thisbookname = ActiveWorkbook.Name
thisheetname = ActiveSheet.Name
'多文件求和汇总
Application.DisplayAlerts = False
Application.ScreenUpdating = False
RefEdit1 = "$c$9:$c$11" '需合并的数据区域
RefEdit2 = "$c$14:$c$14"
RefEdit3 = "$c$18:$c$19"
RefEdit4 = "$c$21:$c$23"
For i = 1 To UBound(Filename)
sName = Dir(Filename(i))
Workbooks.Open Filename(i), UpdateLinks:=0
Workbooks(sName).Worksheets(thisheetname).Activate
rng = Range(RefEdit1).Address
Range(rng).Copy
Workbooks(thisbookname).Activate
Range(rng).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
Workbooks(sName).Worksheets(thisheetname).Activate
rng = Range(RefEdit2).Address
Workbooks(sName).Worksheets(thisheetname).Activate
Range(rng).Copy
Workbooks(thisbookname).Activate
Range(rng).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
Workbooks(sName).Worksheets(thisheetname).Activate
rng = Range(RefEdit3).Address
Range(rng).Copy
Workbooks(thisbookname).Activate
Range(rng).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
Workbooks(sName).Worksheets(thisheetname).Activate
rng = Range(RefEdit4).Address
Range(rng).Copy
Workbooks(thisbookname).Activate
Range(rng).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
Workbooks(sName).Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub追问谢谢,你好像没有看清我的要求。
你的这段代码,我试了下结果是空白,最后选中C21:C23这位个单元格,我将区域改了后出现的也只是这片区域被选中,而不是将原表数据搬过来
追答Sub CombineWorkbooks()
Dim FilesToOpen, wb
Dim x As Integer, str$
On Error GoTo errhandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename(Filefilter:="MicroSoft Excel文件(*.xls),*.xls", MultiSelect:=True, Title:="要合并的文件")
If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "没有选中文件"
GoTo exithandler
End If
x = 1
While x <= UBound(FilesToOpen)
D最后行 = [B65536].End(xlUp).Row + 1
Set wb = Workbooks.Open(FilesToOpen(x))
最后行 = wb.Sheets("表一").[B65536].End(xlUp).Row
wb.Sheets("表一").Rows("3:" & 最后行).Copy Destination:=ThisWorkbook.Sheets("表一").Rows(D最后行)
'Wb.Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
str = wb.Name
str = Left(str, Len(str) - 4)
x = x + 1
wb.Close False ' 不保存就关闭这个打开的工作簿
' Range(Cells(D最后行, 1), Cells(D最后行 + 最后行 - 2, 1)) = str '文件名
Wend
exithandler:
Application.ScreenUpdating = True
Exit Sub
errhandler:
MsgBox Err.Description
Resume exithandler
End Sub
热心网友
时间:2023-09-15 01:32
看别人的代码是最难的,所以我提供一下另一种思路。
1.归类:先用代码查找格式相同的文件,将这些文件放到别的文件夹下。
2.合并:按顺序打开每一个文件,复制指定区域,粘贴到新的文件里。
如果你觉得我的思路可以,而自己搞不定代码的话,可以Q我:369866705
热心网友
时间:2023-09-15 01:33
Sub 删除不连续的空白行()
Dim i, m, n, a, b, c,
m = 0
n = 5000
b = 0
For i = 5000 To 1 Step -1
2 If Sheet1.Cells(i, 1) = "" Then
n = i
m = m + 1
ElseIf Sheet1.Cells(i, 1) <> "" Then
If m = 0 Then
GoTo 3
Else
Range(Cells(n, 1), Cells(n + m - 1, 256)).Delete
m = 0
End If
3 For c = n - 1 To 1 Step -1
If Sheet1.Cells(c, 1) <> "" Then
a = c
b = b + 1
Else
i = c
GoTo 2
End If
Next c
i = c
End If
Next i
End Sub
这个是粗略的,没有简化
热心网友
时间:2023-09-15 01:33
采用单行复制
j = 1
For i = 1 To Max
If Cells(i, 1).Value <> "" Then
Sheets("Sheet1").Rows([i]).Copy Sheets("Sheet1").Rows([j])
j = j + 1
End If
Next i
或选择性批量复制
Dim i%, r%
Dim rag As Range
i = 1
For Each rag In Sheets("Sheet2").Range("A1:A100") ''判断A列是否空值
If rag.Value <> "" Then
r = rag.Row
Sheets("Sheet2").Rows([r]).Copy Sheets("Sheet1").Rows([i])
i = i + 1
End If
Next
参考资料:http://zhidao.baidu.com/question/84622759.html?fr=qrl&cid=864&index=3&fr2=query
用vba实现同一个文件夹内的多个excel文件,对同sheet名的工作簿合并成...
' 打开主工作簿 Set 主工作簿 = ThisWorkbook ' 设置目标工作表,这里假设要合并到主工作簿的Sheet1工作表中 Set 目标工作表 = 主工作簿.Sheets("Sheet1")' 获取文件夹中的文件名 文件名 = Dir(文件夹路径 & "*.xlsx")' 循环处理每个文件 Do While 文件名 <> ""' 打开源工作簿 Set 源...
如何用简便方法将同一个文件夹里多个格式相同的WPS表格快速复制到同一...
1.原始数据所在工作簿包含多个格式相同的工作表,只不过每个工作表内容不同,比如说不同人名的工作表数据或者不同部门填写的数据。2.在原始数据同目录下新建一个工作簿,建立两个工作表,名称分别为“首页”和“合并汇总表”。3.按Alt+F11进入VBA代码编辑和调试界面。4.根据下图提示,插入一个模块。5....
如何将多个格式一样的excel文件合并为一个
要将多个格式相同的Excel文件合并为一个,可以使用Excel的VBA宏、Python的pandas库或第三方Excel插件等工具来自动化处理。首先,如果熟悉VBA编程,可以通过编写一个宏来自动合并多个Excel文件。这个宏可以遍历指定文件夹中的所有Excel文件,然后逐个打开它们,将每个文件中的数据复制到一个新的总表格中。例如,...
怎样用VBA将同一个工作簿中的指定工作表合并?
本例中,用VBA将同一个工作簿中的指定工作表合并,方法如下:第一步,在VBA编辑器中,插入新模块。第二步,在模块中复制以下代码。Sub MergeALLSheetsInOne()Dim tsh As Worksheet Dim ssh As Worksheet Dim lrng As Long Dim lcc As Long Dim tshlrng As Long Set tsh = Sheets("A")For E...
如何用EXCEL中的VBA合并同一资料夹中,多个工作簿的同一个工作表?
1)Else Workbooks(myfile).Sheet1.Activate Workbooks(myfile).Sheet1.UsedRange.Offset(9, 0).Copy Destination:=thisworkbook.Sheets("汇总").Cells(thisworkbook.Sheets("汇总").Range("A65536").End(xlUp).Row + 1, 1) End If ActiveWorkbook.Close myfile = Dir Loop While...
如何用VBA将多个excel表格合并成一个呢?
1、首先我们打开需要汇总的excel表格,在表格的下面,重命名一个表格,我们暂且命名为“汇总”。然后我们点击打开数据中的“合并计算”选项。然后我们在弹出来的窗口中的点击引用位置后面的图标。2、如果是相同格式的Excel表格,可以利用VBA快速将几个工作表中的数据全部汇总到一个工作表中。3、,新建一个...
同一个目录下的多个excel文件,不同文件名,相同格式,要求将所有数据合并...
1.将所有格式相同的Excel表格保存到一个文件夹内;2.在文件夹内新建一个Excel工作表,命名为“汇总表”;3.打开汇总表,按“Alt + F11”打开VBA开发环境,双击工程资源管理器里面的sheet1(sheet1),在右侧的代码区编写如下代码:Sub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, ...
求一个VBA,一个文件夹中多个EXCEL工作簿合并成一个工作表?
1、将需要合并的EXCEL文件与目的EXCEL文件放在一个文件夹下。2、 打开HB.xlsx,将“开发工具”菜单加载到EXCEL菜单下。3、首先右键点击菜单空白处,选择“自定义功能区”,在弹出的对话框里选择主选项卡。然后勾选“开发工具”。如图所示。4、 制作导入键。点击“开发工具”菜单,选择“插入”--“...
如何将两个格式相同的工作簿中多个工作表数据合并?
合并表,复制A人的或B人的表,如果所有表一样,留一表,其它删除。在一表填写公式对应单位元格引用A和B,如果其它表一样不用改公式,将表复制一份,将复制表变数值。再把有公式表"=IF"替换成"8888=IF",然后A人表中Sheet1,改成Sheet11,B人表中Sheet1,改成Sheet11,然后把A人表中Sheet2,改...
如何对同一文件夹下多个相同EXCEL表格中相同单元格内容进行批量修改...
如何对同一文件夹下多个相同EXCEL表格中相同单元格内容进行批量修改 这个建议使用vba来遍历文件,并进行修改的 可以使用dir或者fso文件系统进行文件遍历处理的 如何对同一个文件夹下几十个相同excel表格相同的单元格进行批量替换 有两个方案:1.用函数(如果文件数量不是很多的话):选定一个为主表(...