1 、上百个CSV文件名,如是《文件001.cvs》、《文件002.cvs》、……,可以一次导入;
2、如果文件名没有共性字符,则一个一个文件导入(需要修改代码)
3、开两个工作表,一个为“文件目录”,一个为“合并文件”
3、程序如下:
Sub 合并文件()
Application.ScreenUpdating = False '关闭屏幕更新
'---------------------------------------------
'请空表格
Sheets("合并文件").Select
Cells.EntireRow.Delete
Sheets("目录文件").Select
Cells.EntireRow.Delete
'---------------------------------------------
'读取文件名称,提取共性字符,并判断是否为CSV文件
读入文件 = Application.GetOpenFilename(Filefilter:="*.file ,*.*")
If 读入文件 = False Then Exit Sub
长度 = Len(读入文件)
For I = 长度 - 1 To 1 Step -1
If Mid$(读入文件, I, 1) = "\" Then
文件夹 = Left$(读入文件, I)
文件名 = Mid$(读入文件, I + 1, 长度 - I + 1)
Exit For
End If
Next
文件后缀 = LCase(Right$(文件名, 3))
If 文件后缀 <> "csv" Then
MsgBox "数据文件名称不正确!只能读取【CSV】文件!!": Exit Sub
End If
'---------------------------------------------
文件名 = Left$(文件名, 3) + "*" '前3个字符为共性字符
'文件名 = "*" & ".csv" '后缀为共性字符,没有其它的csv文件
'---------------------------------------------
'导入文件名称,形成文件目录
H = 1: L = 1
文件 = Dir(文件夹 & 文件名)
Do While Len(文件) > 0
Cells(H, L) = H
Cells(H, L + 1) = 文件
文件 = Dir()
H = H + 1
Loop
'---------------------------------------------
'导入文件,合并文件
H1 = 1: L1 = 1
HH1 = 2:
Sheets("合并文件").Select
For HH = 1 To H
序号 = Sheets("目录文件").Cells(H, 1)
文件名 = Sheets("目录文件").Cells(H, 2)
Workbooks.OpenText Filename:=文件夹 + 文件名 '打开文件
H2 = Cells(65536, L1).End(xlUp).Row
L2 = Cells(H1, 256).End(xlToLeft).Column
范围 = Range(Cells(H1, L1), Cells(H2, L2))
ActiveWindow.Close '关闭打开的文件
'--------------------------------------
LL1 = Cells(HH1, 256).End(xlToLeft).Column
If LL1 > 1 Then LL1 = LL1 + 1
LL2 = LL1 + L2 - L1
HH2 = HH1 + H2 - H1
Range(Cells(HH1, LL1), Cells(HH2, LL2)) = 范围
Cells(HH1 - 1, LL1) = 序号
'03版Excel有256列,如果每个文件有3列以上数据,那么上百个文件,合并后就有300列以上数据,就装不下了
'07版Excel有16384,自己计算一下
Next
End Sub
追答
上传了一个附件,打开运行
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。