Excel-VBA把工作薄中的工作表拆分独立工作薄

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel-VBA把工作薄中的工作表拆分独立工作薄

应用场景把工作薄的工作表拆分为独立的工作薄

知识要点

1:Application.FileDialog(msoFileDialogFolderPicker) 通过

对话框选择存放路径2:Workbook.SaveAs 方法在另一不

同文件中保存对工作簿所做的更改。3:.Find('*]*'!' 查找工

作表中是否存在外部引用,如有则转换为值

4:Sheets.Copy(Before, After) 方法将工作表复制到工作簿

的另一位置,如果既不指定Before 也不指定After,则将新

建一个工作簿,其中包含复制的工作表。5:Shell 函数执

行一个可执行文件Shell 'EXPLORER.EXE' 用EXPLORER.EXE 打开文件夹6:explorer.exe是Windows

程序管理器或者文件资源管理器,它用于管理Windows图

形壳,包括桌面和文件管理Sub 把工作薄拆分为单个工作

表() On Error Resume Next Dim Pathstr As String, i As Long, Activewb As String, Cell As Range, Firstaddress As String With

Application.FileDialog(msoFileDialogFolderPicker) '

创建文件对话框的实例If .Show Then '如果在对话框中单击了确定按钮Pathstr =

.SelectedItems(1) '将选定的路径赋予变量Else

Exit Sub End If End With Pathstr = Pathstr

& IIf(Right(Pathstr, 1) = '\', '', '\') '如果不是\,末尾添加\ Application.ScreenUpdating = False Activewb = '记录活动工作薄名For i = 1 To Sheets.Count '循环所有工作表Sheets(i).Copy '复制

工作表到新工作薄中(忽略了参数) '将工作薄另存,

文件名由工作表觉得,而文件的后缀名则由excel程序的版

本决定ActiveWorkbook.SaveAs Filename:=Pathstr

& Workbooks(Activewb).Sheets(i).Name &

IIf(Application.Version * 1 < 12, '.xls', '.xlsx'),

FileFormat:=xlWorkbookDefault, CreateBackup:=False

With edRange '引用已用区域'查

找“=*]*'!”,也就是检查是否存在外部引用Set Cell = .Find('*]*'!', LookIn:=xlFormulas,

searchorder:=xlByRows, lookat:=xlPart, MatchCase:=True) If Cell Is Nothing Then GoTo Line Firstaddress = Cell.Address '记录第一个找到的地址Do Cell = Cell.Value '将公式转换为数值

Set Cell = .FindNext(Cell) '查找下一个If

Cell Is Nothing Then Exit Do '如果未找到,退出循环

If Cell.Address = Firstaddress Then Exit Do Loop End WithLine: ActiveWindow.Close '关闭窗口

Workbooks(Activewb).Activate '激活待拆分的工作薄

Next i Application.ScreenUpdating = True Shell

'EXPLORER.EXE' & Pathstr, vbNormalFocus '打开文件夹End Sub

相关文档
最新文档