Excel拆分脚本

server/2024/12/19 3:52:34/

Excel拆分

  • 工作表按行拆分为工作薄

工作表按行拆分为工作薄

打开要拆分的Excel文件,使用快捷键(Alt+F11)打开脚本界面,选择要拆分的sheet,打开Module,在Module中输入脚本代码,然后运行脚本
在这里插入图片描述

java">Sub 工作表按行拆分为工作薄()Dim tm As DateDim fso As ObjectDim ws As WorksheetDim wb As WorkbookDim newWb As WorkbookDim savePath As StringDim wbPath As StringDim wbName As StringDim saveFile As StringDim titleRow As LongDim numRows As LongDim maxRow As LongDim sheetCount As LongDim i As LongDim lastRowCopied As Long' 初始化tm = NowApplication.Visible = FalseApplication.DisplayAlerts = FalseSet fso = CreateObject("Scripting.FileSystemObject")' 参数设置titleRow = 1numRows = 50000Set ws = ThisWorkbook.ActiveSheetwbPath = ThisWorkbook.PathwbName = ThisWorkbook.NamesavePath = wbPath & "\split"' 创建保存路径文件夹(如果不存在)If Not fso.FolderExists(savePath) Thenfso.CreateFolder savePathEnd If' 计算最大行数和拆分后的工作表数量maxRow = ws.UsedRange.Rows.CountsheetCount = WorksheetFunction.RoundUp((maxRow - titleRow) / numRows, 0)' 循环拆分并保存工作簿On Error GoTo ErrorHandlerFor i = 1 To sheetCount' 创建新工作簿Set newWb = Workbooks.AddWith newWb.Sheets(1)' 复制表头ws.Rows("1:" & titleRow).Copy Destination:=.Rows("1:" & titleRow)' 复制数据lastRowCopied = numRows * (i - 1) + titleRow + numRowsIf lastRowCopied > maxRow Then lastRowCopied = maxRowws.Rows(numRows * (i - 1) + titleRow + 1 & ":" & lastRowCopied).Copy Destination:=.Rows(titleRow + 1)' 复制列宽(可选).Columns("A:Z").AutoFit ' 或者指定需要的列End With' 保存新工作簿saveFile = savePath & "\" & fso.GetBaseName(wbName) & "_split" & i & "." & fso.GetExtensionName(wbName)newWb.SaveAs Filename:=saveFilenewWb.Close FalseSet newWb = Nothing ' 释放新工作簿对象Next i' 清理和恢复设置Set fso = NothingApplication.Visible = TrueApplication.DisplayAlerts = TrueDebug.Print "工作表已拆分完成,累计用时" & Format(Now() - tm, "hh:mm:ss")Exit SubErrorHandler:MsgBox "错误 " & Err.Number & ": " & Err.Description, vbCritical' 清理和恢复设置(错误处理中的清理)If Not newWb Is Nothing Then newWb.Close FalseSet fso = NothingApplication.Visible = TrueApplication.DisplayAlerts = True
End Sub

http://www.ppmy.cn/server/151341.html

相关文章

Android OnTouchListener OnTouchEvent OnClickListener三者之间的关系?

在android开发过程中,我们时常会需要与用户进行信息交互,就会接触到android的两种事件处 理机制:事件回调机制(onEvent)和事件监听机制(onListener),那么他们两者之间到底有什 么区别…

划分WLAN的三种主要方法,基于WLAN,基于IP,基于端口

划分WLAN的三种主要方法包括基于交换机端口的划分、基于MAC地址的划分和基于L3的IP划分‌。 ‌基于交换机端口的划分‌:这是最常见的VLAN划分方法。通过将交换机上的特定端口分配给不同的VLAN,可以实现网络的不同部分相互隔离。每个端口只能属于一个VLAN…

论文信息收集1217

系列博客目录 文章目录 系列博客目录1.《A low-rank support tensor machine for multi-classification》2.Supervised Learning by Low Rank Estimation on Tensor Data.3.Tensor Regression Using Low-rank and Sparse Tucker Decompositions 张量回归:低秩和稀疏…

MYSQL执行一条update语句,期间发生了什么

客户端先通过连接器建立连接,连接器自会判断用户身份; 因为这是一条 update 语句,所以不需要经过查询缓存,但是表上有更新语句,是会把整个表的查询缓存清空的,所以说查询缓存很鸡肋,在 MySQL 8…

查询三网话费余额接口,移动话费余额接口、电信话费余额接口、联通话费余额的接口+html前端查询UI界面

PHP是直接请求的接口&#xff0c;HTML代码也是直接请求的接口。如果HTML想上线运行&#xff0c;还是需要做下安全的。 下边是PHP代码 <?php // 定义API接口地址和参数 $apiUrl "https://api.taolale.com/api/Inquiry_Phone_Charges/get"; //API文档地址&…

MySQL--索引(详解)

欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进哦~ 博客主页链接点这里–>&#xff1a;权权的博客主页链接 目录 一、本节目标二、简介2.1索引是什么&#xff1f;2.2为什么要使用索引&#xff1f; 三、索引应该选…

Linux Mail 功能解析

在 Linux 系统中&#xff0c;mail 命令是用于发送、接收和管理电子邮件的一个常见工具。它通常是系统默认安装的一部分&#xff0c;主要用于命令行界面&#xff08;CLI&#xff09;下的邮件操作。以下是关于 Linux 中 mail 命令及其相关功能的详细解析。 1. 基本功能&#xff…

鸿蒙Next数据懒加载LazyForEach用法总结

在鸿蒙Next开发中&#xff0c;LazyForEach提供了高效的数据懒加载机制&#xff0c;适用于处理大量数据的列表展示等场景&#xff0c;可有效提升性能和内存管理。以下是其详细用法总结。 一、使用限制 容器组件要求&#xff1a;必须在特定容器组件&#xff08;List、Grid、Swi…