Q:Word 文档,vbs脚本,批量标准化表格(统一表格宽度、内边距及布局样式)

news/2025/12/8 12:16:46/文章来源:https://www.cnblogs.com/wxp100/p/19320990

Q:Word 文档,vbs脚本,批量标准化表格(统一表格宽度、内边距及布局样式)

Posted on 2025-12-08 12:02  三年三班王小朋  阅读(0)  评论(0)    收藏  举报

适用于需要批量规范表格格式的场景(如标准化报告、说明书等),避免手动调整多个表格的重复操作,提升文档格式统一性和处理效率。

Sub Auto_fit_list_width()Dim startTime As Single, endTime As SinglestartTime = Timer  ' ⏱️ 开始计时
    Dim tbl As TableDim colWidthsCm As VariantDim colWidthsPt(0 To 5) As SingleDim i As Integer, r As IntegerDim totalWidthCm As Single, totalWidthPt As Single' 列宽配置(厘米)colWidthsCm = Array(5.5, 5.5, 2, 3, 7, 1.5)totalWidthCm = 0For i = 0 To 5colWidthsPt(i) = CentimetersToPoints(colWidthsCm(i))totalWidthCm = totalWidthCm + colWidthsCm(i)Next itotalWidthPt = CentimetersToPoints(totalWidthCm)' 边距(磅)— 预计算以提升性能Dim topP As Single: topP = 0Dim bottomP As Single: bottomP = 0Dim leftP As Single: leftP = CentimetersToPoints(0.19)Dim rightP As Single: rightP = CentimetersToPoints(0.19)' 保存原始 Word 设置
    Dim originalAlerts As WdAlertLevelDim originalSpell As Boolean, originalGrammar As Boolean, originalScreenUpdating As BooleanoriginalAlerts = Application.DisplayAlertsoriginalSpell = Application.Options.CheckSpellingAsYouTypeoriginalGrammar = Application.Options.CheckGrammarAsYouTypeoriginalScreenUpdating = Application.ScreenUpdating' 关闭干扰项以加速执行Application.DisplayAlerts = wdAlertsNoneApplication.Options.CheckSpellingAsYouType = FalseApplication.Options.CheckGrammarAsYouType = FalseApplication.ScreenUpdating = FalseActiveDocument.UndoClear' 缓存所有表格Dim allTables As Collection: Set allTables = New CollectionDim tblTemp As TableFor Each tblTemp In ActiveDocument.TablesallTables.Add tblTempNext tblTempDim totalTables As Long: totalTables = allTables.CountIf totalTables = 0 ThenMsgBox "文档中没有表格。", vbExclamationGoTo CleanupEnd IfDim processedCount As Long, batchSize As Long: batchSize = 10Dim rowCount As LongDim cell As CellFor processedCount = 1 To totalTablesSet tbl = allTables(processedCount)Dim actualColCount As LongOn Error Resume NextactualColCount = tbl.Range.Columns.CountOn Error GoTo 0If actualColCount <= 0 Then GoTo NextTableIf actualColCount = 6 ThenDim useColumnMethod As Boolean: useColumnMethod = TrueOn Error Resume NextFor i = 1 To 6tbl.Columns(i).Width = colWidthsPt(i - 1)Next iIf Err.Number = 5992 ThenuseColumnMethod = FalseErr.ClearEnd IfOn Error GoTo 0With tbl.AllowAutoFit = False.AutoFitBehavior wdAutoFitFixed.PreferredWidthType = wdPreferredWidthPoints.PreferredWidth = totalWidthPt.Rows.Alignment = wdAlignRowCenter.Rows.LeftIndent = 0.Rows.WrapAroundText = FalseEnd WithrowCount = tbl.Rows.CountDim rowObj As RowFor r = 1 To rowCountSet rowObj = tbl.Rows(r)rowObj.AllowBreakAcrossPages = FalseIf useColumnMethod ThenFor Each cell In rowObj.CellsSetCellPadding cell, topP, bottomP, leftP, rightPNext cellElseSelect Case rowObj.Cells.CountCase 6For i = 0 To 5SetCellPadding rowObj.Cells(i + 1), topP, bottomP, leftP, rightProwObj.Cells(i + 1).Width = colWidthsPt(i)Next iCase 1SetCellPadding rowObj.Cells(1), topP, bottomP, leftP, rightProwObj.Cells(1).Width = totalWidthPtCase ElseFor Each cell In rowObj.CellsSetCellPadding cell, topP, bottomP, leftP, rightPNext cellEnd SelectEnd IfNext rElseIf actualColCount = 1 ThenWith tbl.AllowAutoFit = False.AutoFitBehavior wdAutoFitFixed.PreferredWidthType = wdPreferredWidthPoints.PreferredWidth = totalWidthPt.Rows.Alignment = wdAlignRowCenter.Rows.LeftIndent = 0.Rows.WrapAroundText = FalseEnd WithOn Error Resume Nexttbl.Columns(1).Width = totalWidthPtIf Err.Number = 5992 ThenErr.ClearrowCount = tbl.Rows.CountFor r = 1 To rowCountIf tbl.Rows(r).Cells.Count >= 1 Thentbl.Rows(r).Cells(1).Width = totalWidthPtSetCellPadding tbl.Rows(r).Cells(1), topP, bottomP, leftP, rightPEnd IfNext rEnd IfOn Error GoTo 0If Err.Number = 0 ThenrowCount = tbl.Rows.CountFor r = 1 To rowCountWith tbl.Rows(r).AllowBreakAcrossPages = TrueIf .Cells.Count >= 1 ThenSetCellPadding .Cells(1), topP, bottomP, leftP, rightPEnd IfEnd WithNext rEnd IfEnd IfNextTable:Set tbl = NothingIf (processedCount Mod batchSize = 0) Or (processedCount = totalTables) ThenApplication.StatusBar = "正在格式化表格... 已完成 " & processedCount & " / " & totalTablesDoEventsEnd IfNext processedCountCleanup:endTime = Timer  ' ⏱️ 结束计时
    Dim elapsedSeconds As SingleelapsedSeconds = Round(endTime - startTime, 2)  ' 保留两位小数的秒数
    Application.StatusBar = FalseApplication.ScreenUpdating = originalScreenUpdatingApplication.DisplayAlerts = originalAlertsApplication.Options.CheckSpellingAsYouType = originalSpellApplication.Options.CheckGrammarAsYouType = originalGrammarIf totalTables > 0 ThenMsgBox "表格格式化已完成!共处理 " & totalTables & " 张表格。" & vbCrLf & _"耗时: " & elapsedSeconds & "", vbInformationEnd If
End Sub' === 提取的子过程:统一设置单元格内边距 ===
Private Sub SetCellPadding(ByRef c As Cell, _ByVal topP As Single, _ByVal bottomP As Single, _ByVal leftP As Single, _ByVal rightP As Single)With c.TopPadding = topP.BottomPadding = bottomP.LeftPadding = leftP.RightPadding = rightPEnd With
End Sub

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/992609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025英国留学中介哪个好

2025英国留学中介哪个好一、如何选择英国留学中介作为从事12年国际教育规划师的笔者,经常被学生和家长问及“2025年英国留学中介哪个好”这一问题。在2025年11月29日的当下,英国留学申请竞争日益激烈,中介选择成为关…

OEM ESCL Simulator for VW Touareg, Audi A8, Porsche Cayenne Bentley: Immobilizer Repair 2004-2015

Solving ESCL System Troubles in Luxury VW Group Vehicles: The OEM ESCL Simulator Advantage Problem: Immobilizer & Steering Column Lock Challenges in Older Luxury Models Owners of 2004–2015 VW Grou…

2025喷砂机哪家好?喷砂机十大厂家排名榜单

在工业表面处理领域,喷砂机是不可或缺的关键设备。众多专注细分领域的喷砂机厂家凭借独特技术与产品优势,在市场中占据一席之地。以下为 2025 年值得关注的 10 家喷砂机厂家。​一、广东美辉智能装备科技有限公司 【…

使用 aardio 写一个基于pyocd的单片机下载器

使用 aardio 写一个基于pyocd的单片机下载器$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");1 新建工程 最开始本来是打算调用pyocd 的python api的,但是一…

混合机厂家口碑榜:本地直销TOP10强推荐,槽型混合机/混合机/烘箱/对开门烘箱/泳池专用臭氧发生器/脱硝臭氧发生器混合机品牌排行

在精细化工、制药、食品、新材料等众多工业领域,混合工艺是决定最终产品质量的关键环节之一。随着产业升级与智能制造需求的提升,市场对混合设备的精度、效率、稳定性及定制化能力提出了更高要求。在众多采购渠道中,…

2025年盘点:3A信用认证申请优质服务商口碑榜,ISO20000/知识产权认证/企业信用认证/3A信用认证代理口碑推荐榜

在日益注重商业信誉与合规经营的市场环境下,3A信用认证已成为企业彰显实力、获取信任、赢得商机的“金名片”。随着申请需求的激增,市场上涌现出众多提供相关咨询与申报服务的机构。为帮助广大企业精准甄别,本文基于…

2025不锈钢半管加工厂综合实力榜单

2025不锈钢半管加工厂综合实力榜单。不锈钢半管因兼具耐腐蚀、强度高、换热效率好等特点,被广泛用于化工、食品、医药、能源等多个领域。随着下游行业对设备精度和安全性要求的提升,不锈钢半管加工行业也迎来了稳步发…

2025年度竹木地板加工厂TOP5实力推荐:竹木地板厂家哪家

在双碳战略驱动下,竹木地板凭借环保可再生、力学性能优异的特性,成为文旅、校园、商业空间的优选材料。2024年国内竹材加工市场规模突破320亿元,年增速达28%,但用户对防腐耐用承重安全环保认证的核心需求尚未被充分…

2025弯管定制加工厂/型材拉弯加工厂权威排行

2025弯管定制加工厂/型材拉弯加工厂权威排行。弯管定制和型材拉弯加工是机械制造、建筑装饰、交通运输等行业的基础加工环节。弯管定制能根据客户需求将管材加工成特定角度、弧度的部件,型材拉弯则专注于异型材的弯曲…

从复旦实验室到国际前沿:王迅院士的硬核学术人生

王迅院士:奠基表面物理,让“硅”发光的先行者!在当今芯片热与半导体技术备受瞩目的时代,我们不应忘记那些为中国半导体物理学科奠基的先行者。当我们打开AMiner学术搜索系统,输入“王迅”这个名字,映入眼帘的是一…

2025深度测评!多个中国防伪印刷工厂品质揭秘

2025深度测评!多个中国防伪印刷工厂品质揭秘!选择防伪印刷工厂需综合考虑多方面因素。首要考量的是工厂的技术研发能力,包括持有的专利数量、技术团队构成以及研发投入比例。其次是生产设备的先进程度,精密的印刷设备…

2025杭州隔音窗品牌推荐权威排行

2025杭州隔音窗品牌推荐权威排行。城市里的噪音问题越来越受关注,无论是马路边的汽车声,还是小区里的施工声,都影响着人们的生活质量。隔音窗作为解决噪音问题的有效工具,慢慢走进了更多杭州家庭和企业。现在的隔音…

2025盘管加工生产厂家/中频热弯加工厂家综合榜单

2025盘管加工生产厂家/中频热弯加工厂家综合榜单。盘管加工和中频热弯加工是工业制造领域的关键加工技术。盘管加工通过特定工艺将管材弯曲成螺旋状或环状,具备换热面积大、结构紧凑的特点,广泛用于化工反应釜、制冷…

2025年中国五大园艺火花塞生产厂家推荐:有实力的园艺火花塞

TOP1 推荐:半球火花塞 推荐指数:★★★★★ 口碑评分:国内园艺火花塞领域标杆品牌 专业能力:黄山半球是集研发、生产、销售为一体的专业火花塞企业,在园艺火花塞赛道凭借半球形电极+精准材质匹配核心技术突围——…

袋式过滤器怎么选?这份深度解析与TOP报告值得参考

随着2025年工业领域对固液分离精度和设备耐用性要求的全面提升,选择一家可靠的过滤设备供应商成为众多企业面临的难题。 2025年的工业过滤设备市场正经历着深刻变革。据中国过滤分离设备协会发布的行业白皮书显示,随…

在嵌入式Linux系统上使用LiteLLM部署轻量级语言模型全攻略

本文详细介绍了如何在资源受限的嵌入式Linux设备上,通过LiteLLM代理网关部署和优化轻量级大语言模型,实现本地化AI推理,涵盖从环境准备、安装配置到性能调优的完整步骤。如何在嵌入式Linux上使用LiteLLM部署轻量级语…

2025防水涂料哪个品牌好:知名的防水涂料品牌推荐对比

2025防水涂料哪个品牌好:知名的防水涂料品牌推荐对比!挑选防水涂料品牌,需围绕核心需求与产品硬实力综合决策,避免盲目跟风。优先核查产品是否符合《建筑与市政工程防水通用规范》(GB55030-2022)等国家标准,关键指…

基于MATLAB实现的樽海鞘算法

基于MATLAB实现的樽海鞘算法(Salp Swarm Algorithm, SSA) 1. 定义樽海鞘个体类 classdef SA_Unit < handlepropertiesposition; % 个体位置value; % 个体适应度值endmethodsfunction obj = SA_Unit(dim)obj.po…

2025电动车连接器厂家不踩坑,深圳防水连接器厂家来了

2025电动车连接器厂家不踩坑,深圳防水连接器厂家来了!一、深圳防水连接器厂家选购核心指南深圳作为国内连接器产业集群核心区域,聚集了大量防水连接器厂商,涵盖电动车、植物灯、锂电池等多个应用场景。选择时需避开 …

人体工学椅源头工厂有哪些?2025安吉人体工学椅厂家实力榜

随着远程办公和健康办公理念的普及,人体工学椅逐渐成为办公和居家的刚需产品。这种依据人体脊柱生理曲线与坐姿力学设计的椅子,能通过可调腰托、头枕等功能减少久坐疲劳,受到越来越多消费者的关注。一、人体工学椅行…