本文主要是介绍VBA 拆分Excel中的各sheet为文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一. 方式1
xlOpenXMLWorkbook
:.xlsx格式的文件xlWorkbookDefault
:当前Excel的格式(当前Excel是什么格式,被拆分出的sheet页所生成的文件就是什么格式)"\"
:可以使用Application.PathSeparator
代替
Sub 拆分工作表()' 初始化变量Dim sheetObj As WorksheetDim MyBook As WorkbookSet MyBook = ActiveWorkbook' 循环Excel中的所有sheet页For Each sheetObj In MyBook.Sheets' 复制当前sheet页sheetObj.Copy' 根据sheet名称创建文件,并且指定新创建的文件类型是 .xlsxActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & sheetObj.Name, FileFormat:=xlOpenXMLWorkbook' 关闭新创建的工作簿ActiveWorkbook.CloseNext' 弹出对话框,提示处理完毕MsgBox "文件已经被拆分完毕!"End Sub
二. 方式2
sht.Visible
:判断sheet页是否可见-1
:xlSheetVisible(工作表可见)0
:xlSheetHidden(工作表隐藏,但可以通过工作表选项卡显示)2
:xlSheetVeryHidden(工作表隐藏,并且在工作表选项卡中不可见)
With Application.FileDialog(msoFileDialogFolderPicker)
:用于显示文件夹选择对话框的语句- msoFileDialogOpen:打开文件对话框,用于选择要打开的文件。
- msoFileDialogSaveAs:另存为文件对话框,用于选择保存文件的路径和文件名。
- msoFileDialogFilePicker:文件选择对话框,允许选择一个或多个文件。
- msoFileDialogFolderPicker:文件夹选择对话框,用于选择文件夹路径。
Right(strPath, 1)
:获取右侧第一个字符- VBA中的
For Each
没有类似于contiune
的语法,只能使用IF Else
来处理跳过
Sub EachShtToWorkbook()Dim sht As WorksheetDim strPath As StringDim visibilityStatus As Integer' 选择保存工作薄的文件路径With Application.FileDialog(msoFileDialogFolderPicker)' 读取选择的文件路径,如果用户未选取路径则退出程序If .Show ThenstrPath = .SelectedItems(1)ElseExit SubEnd IfEnd With' 如果路径中没有分隔符的话,就给加上分隔符If Right(strPath, 1) <> Application.PathSeparator ThenstrPath = strPath & Application.PathSeparatorEnd If' 取消显示系统警告和消息,避免重名工作簿无法保存。当有重名工作簿时,会直接覆盖保存。Application.DisplayAlerts = False' 取消屏幕刷新Application.ScreenUpdating = False' 遍历工作表For Each sht In Worksheets' 判断当前sheet是否被隐藏visibilityStatus = sht.Visible' xlSheetVisible: -1(工作表可见)' xlSheetHidden: 0(工作表隐藏,但可以通过工作表选项卡显示)' xlSheetVeryHidden: 2(工作表隐藏,并且在工作表选项卡中不可见)If visibilityStatus <> xlSheetHidden And visibilityStatus <> xlSheetVeryHidden Then' 复制工作表,工作表单纯复制后,会成为活动工作薄sht.CopyWith ActiveWorkbook' 保存活动工作薄到指定路径下,以当前系统默认文件格式.SaveAs strPath & sht.Name, xlWorkbookDefault' 关闭工作薄并保存.Close TrueEnd WithEnd IfNext' 恢复屏幕刷新Application.ScreenUpdating = True' 恢复显示系统警告和消息Application.DisplayAlerts = TrueMsgBox "处理完成。", , "提醒"End Sub
这篇关于VBA 拆分Excel中的各sheet为文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!