|
- Sub Opiona()
- '禁止系统刷屏?触发其他事件等
- 'On Error Resume Next '// 发生错误,自动执行下一句,就是忽略错误
- Application.ScreenUpdating = False '//关闭屏幕刷新
- Application.DisplayAlerts = False '//关闭系统提示
- Application.EnableEvents = False '//禁止触发其他事件
- t = Timer '//开始时间
- Set SH1 = Worksheets("Sheet1")
-
- Rem ARX工作表名 = Split("BB01,BB02,BB03", ",") '//指定:工作表
- ARX工作表名 = SH1.Range("A2:A" & SH1.Range("A20").End(3).Row).Value '//指定:工作表,此处最多19个,可以改
- If SH1.Range("A20").End(3).Row = 2 Then '//处理仅有一个的情况
- ReDim ARX(1 To 1)
- ARX(1) = ARX工作表名
- Else
- ReDim ARX(1 To UBound(ARX工作表名, 1))
- For X = 1 To UBound(ARX工作表名, 1)
- ARX(X) = ARX工作表名(X, 1)
- Next X
- End If
-
- Path原始 = ThisWorkbook.Path & "\原始数据"
- Path结果 = ThisWorkbook.Path & "\结果"
-
- Set FSO = CreateObject("Scripting.FileSystemObject")
- If FSO.FolderExists(Path结果) = True Then
- FSO.GetFolder(Path结果).Delete '//删除文件夹
- End If
-
- FileArr = FileAllArr(Path原始, "*.xls?", ThisWorkbook.Name, True, False)
- MkDir Path结果 '//创建文件夹
-
-
- For I = 0 To UBound(FileArr)
- Set WB = Workbooks.Open(FileArr(I)) '//打开原始数据的每个文件
-
- For X = 1 To UBound(ARX) '//遍历所有指定:工作表
-
- Set SHW = WB.Worksheets(ARX(X))
-
- PATH当前 = Path结果 & "" & SHW.Name & ".XLSX" '//保存到哪个工作簿
- If FSO.FileExists(PATH当前) = False Then '//没有就创建此工作簿
- Set WBX = Workbooks.Add
- WBX.SaveAs Filename:=PATH当前
- WBX.Close True
- End If
- Rem 打开已经创建的表
- Set WBX = Workbooks.Open(PATH当前)
- Rem 创建新的工作表
- WBX.Worksheets.Add(Before:=WBX.Worksheets(1)).Name = Mid(GetPathFromFileName(FileArr(I)), 5, 4)
- Set SHX = WBX.Worksheets(Mid(GetPathFromFileName(FileArr(I)), 5, 4))
- SHW.Cells.Copy SHX.Range("A1")
- WBX.Close True
-
- Next X
-
- WB.Close True '//保存
- Next I
- Application.EnableEvents = True '// '//恢复触发其他事件
- Application.ScreenUpdating = True '//恢复屏幕刷新
- Application.DisplayAlerts = True '//恢复系统提示
- MsgBox "一共用时:" & Format(Timer - t, "#0.0000") & " 秒", , "北极狐提示!!" '//提示所用时间
- End Sub
复制代码 |
|