VBA 拆分Excel中的各sheet为文件

2024-05-05 00:36
文章标签 excel vba 拆分 sheet

本文主要是介绍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页是否可见
    • -1xlSheetVisible(工作表可见)
    • 0xlSheetHidden(工作表隐藏,但可以通过工作表选项卡显示)
    • 2xlSheetVeryHidden(工作表隐藏,并且在工作表选项卡中不可见)
  • 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为文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960441

相关文章

Mac excel 同时冻结首行和首列

1. 选择B2窗格 2. 选择视图 3. 选择冻结窗格 最后首行和首列的分割线加粗了就表示成功了

LeetCode--171 Excel表列序号

题目 给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ... 示例 示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28示例 3:输入: "ZY"输出: 701 class Solution {public:int titleToNumber(strin

浅谈 MySQL for excel

欢迎关注微信公众号“Python生态智联”  MySQL for excel是一个大小只有几兆的MySQL附件,它能让我们在Microsoft excel中处理MySQL数据。小编用了两天时间浏览了MySQL for excel的使用指南并按demo演示了一遍(手册地址https://dev.mysql.com/doc/mysql-for-excel/en/),现从功能和局限两方面对MySQL

Excel实用技巧——二级下拉菜单、数据验证

EXCEL系列文章目录   Excel系列文章是本人亲身经历职场之后萌发的想法,为什么Excel覆盖如此之广,几乎每个公司、学校、家庭都在使用,但是它深藏的宝藏功能却很少被人使用,PQ、BI这些功能同样适用于数据分析;并且在一些需要简单及时的数据分析项目前,Excel是完胜python、R、SPSS这些科学专业的软件的。因此决心开启Excel篇章。 数据分析为什么要学Excel Excel图表

PHP生成csv格式Excel,秒级别实现excel导出功能

防止报超内存,兼容中文,兼容科学技术法。 爽。。。。很爽。。。。 /*** 告诉浏览器下载csv文件* @param string $filename*/public static function downloadCsv($data, $filename, $encoding = 'utf-8'){header("Content-type: text/csv");header("Conten

PHP 读取或生成大的Excel

场景,在很多情况下,需要读取Excel文件。 常用的有PHPExcel包或者使用 maatwebsite/excel 包 但是使用这个包读取或生成excel,如果excel文件过大,很容易出现超内存情况。 解决方法: 上传:要求上传者使用.csv 文件上传。然后使用php自带的 fgetcsv()函数来读取文件。http://php.net/manual/zh/function.fgetc

示例:推荐一个基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器

一、目的:基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器,感兴趣的可以去下方链接地址查看开源控件库地址。本控件封装的目的在于将第三方库的皮肤和样式封装到皮肤库中可统一设置样式,同时生成nuget方便调用 二、效果如下 三、环境 VS2022 Net7 四、使用方式 1、安装nuget包:H.Con

代码随想录算法训练营第三十九天|62.不同路径 63. 不同路径 II 343.整数拆分 96.不同的二叉搜索树

LeetCode 62.不同路径 题目链接:62.不同路径 踩坑:二维的vector数组需要初始化,否则会报错访问空指针 思路: 确定动态数组的含义:dp[i][j]:到达(i,j)有多少条路经递推公式:dp[i][j] = dp[i-1][j] + dp[i][j-1]初始化动态数组:dp[0][0] = 1遍历顺序:从左到右,从上到下 代码: class Solution {pu

「动态规划」如何解决单词拆分问题?

139. 单词拆分https://leetcode.cn/problems/word-break/description/ 给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 输入:s = "leetcode",wordDict = ["leet", "c

poi生成的excel,输入数字后变成1.11111111111111E+23

poi版本4.1.2 生成excel后,单元格输入数字,过长的话变成这样 解决:生成的时候设置单元格格式为文本格式 import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOEx