发布网友 发布时间:2022-04-23 07:16
共4个回答
热心网友 时间:2022-06-06 14:00
展开3全部
将以下代码复制到你要合并的工作表VBA视窗,然后执行此代码
Sub CombineWorkbooksrange()
Dim FilesToOpen, ft
Dim x As Integer
Application.ScreenUpdating = False
On Error GoTo err
FilesToOpen = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlt *.xlsx *.xlsb),*.xls;*.xla;*.xlt;*.xlsx;*.xlsb", MultiSelect:=True, Title:="要合并的文件")
If TypeName(FilesToOpen) = "boolean" Then
MsgBox "没有选定文件"
GoTo err
End If
x = 1
While x - 1 < UBound(FilesToOpen)
Set wk = Workbooks.Open(Filename:=FilesToOpen(x))
For i = 1 To wk.Sheets.Count
Set xlra = wk.Sheets(i).Range("a1:z1")
'注意,引号内的1就是你要的相同工作表名,如果工作表名无要求,则继续,取单元格数值,现在是取a1:z1
Sheet1.Range("a65500").End(xlUp).Offset(1, 0) = wk.Name
xlra.Offset(0, 0).Resize(xlra.Rows.Count, xlra.Columns.Count).Copy Sheet1.Range("a65500").End(xlUp).Offset(1, 1)
Next
x = x + 1
wk.Close
Wend
MsgBox "合并成功完成!"
err:
End Sub
热心网友 时间:2022-06-06 14:00
如果我遇到这样的问题,几分钟写个VBA代码就解决了,但是我不可能几分钟教会你达到这个水平,下面粘贴一下我的代码,随缘吧:
sub 宏1()
dim st,p,f,i
set st=activesheet
p="c:\temp\"'上千个文件所在的文件夹,必须以\结尾
f=dir(p & "*.xls?")
while f<>""
i=i+1
st.cells(i,1)=f
with workbooks.open (p & f)
.sheets(1).range("a1:z1").copy st.cells(i,2)
.close
end with
f=dir
wend
end sub
热心网友 时间:2022-06-06 14:01
先实现在一个表格中提取。然后遍历所有文件执行相同步骤。
热心网友 时间:2022-06-06 14:02
具体问题具体对待。
特定的数据有什么特征?追问都是文件里的第一行
追答方法1、VBA
方法2、PowerQuery
方法3、一行行复制粘贴
方法4、交给秘书