将多个07版xlsx Excel文件转换成03版xls并合并和汇总操作

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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") 进行数据合并。

相关文档
最新文档