将多个07版xlsx Excel文件转换成03版xls并合并和汇总操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、转换格式:首先将所有的表格放在同一个文件夹下面,如D:\1\下面,执行代码将07版
的转换成03版的:代码如下:
Sub Macro1()
'
' Macro1 Macro
'
Dim myFiles
Dim i As Long
myFiles = Dir("D:\1\*.xlsx")
On Error Resume Next
Application.ScreenUpdating = True
Application.DisplayAlerts = False
Do While myFiles <> ""
Workbooks.Open Filename:="D:\1\" & myFiles
ActiveWorkbook.SaveAs Filename:= _
"D:\1\" & Left(myFiles, Len(myFiles) - 1), FileFormat:=xlExcel8, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ActiveWindow.Close
myFiles = Dir
i = i + 1
DoEvents
Loop
MsgBox "全部转换完毕,共转换文件" & i & "个"
End Sub
2、合并表格:将所有的03版本的Sheet1汇总到一个总表中。使用代码如下:(一次只能
合成最多255个,因此300+最好分成两个文件夹处理)
'功能:把多个工作簿的第一个工作表合并到一个工作簿的多个工作表,新工作表的名称等于原工作簿的名称
Sub Books2Sheets()
'定义对话框变量
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'新建一个工作簿
Dim newwb As Workbook
Set newwb = Workbooks.Add
With fd
If .Show = -1 Then
'定义单个文件变量
Dim vrtSelectedItem As Variant
'定义循环变量
Dim i As Integer
i = 1
'开始文件检索
For Each vrtSelectedItem In .SelectedItems
'打开被合并工作簿
Dim tempwb As Workbook
Set tempwb = Workbooks.Open(vrtSelectedItem)
'复制工作表
tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)
'把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
newwb.Worksheets(i).Name = VBA.Replace(, ".xls", "")
'关闭被合并工作簿
tempwb.Close SaveChanges:=False
i = i + 1
Next vrtSelectedItem
End If
End With
Set fd = Nothing
End Sub
3、更改表名:将所有表明改为Sheet x的格式,便于后期统一处理(原表格不能有Sheet
的格式)。代码如下:
Sub 新工作表名()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To Worksheets.Count
Worksheets(i).Name = "Sheet" & i
Next i
Application.ScreenUpdating = True
End Sub
4、合并数据:利用INDIRECT("Sheet"&ROW()-1&"!$A$1") 进行数据合并。