VBA 学习笔记 Word样式处理

  • 移除样式并保留格式
  • 删除用户自定义样式
  • 删除未使用样式
  • 判断样式是否存在
  • 参考资料

移除样式并保留格式

Sub 移除样式并保留格式()'不能完全保留格式'https://sspai.com/post/38852'对于一个由多文档合并起来的长文档,它的样式多而混乱以致于无法使用,会引起word崩溃'对于这些样式,移除(即都统一为正文样式),并保留各种格式(变成不受样式控制的直接格式)Dim Para As ParagraphDim Fnt As Font '代码字体的所有格式Dim Pfmt As ParagraphFormat '代表段落的所有格式For Each Para In ActiveDocument.ParagraphsWith ParaIf .Style <> ActiveDocument.Styles("正文") Then '如果不是正文样式,则开始处理Set Fnt = .Style.Font '获得段落样式的所有字体属性,赋给fntSet Pfmt = .Style.ParagraphFormat '获得段落样式的所有段落属性,赋给pfmt.Style = ActiveDocument.Styles("正文") '把它的样式改为正文.Range.Font = Fnt '为改变样式后的段落设置回原来的字体属性.Range.ParagraphFormat = Pfmt '为改变样式后的段落设置回原来的段落属性End IfEnd WithNextEnd Sub

删除用户自定义样式

Sub DeleteUserStyles()' 报错时直接忽略,继续执行后续代码On Error Resume NextDim oStyle As Style, countcount = 0For Each oStyle In ActiveDocument.Styles' 只检查用户自定义样式If oStyle.BuiltIn = False ThenoStyle.Deletecount = count + 1End IfNext oStyleMsgBox "共删除【" & count & "】个未使用样式"End Sub

删除未使用样式


Sub DeleteUnusedStyles()' 报错时直接忽略,继续执行后续代码On Error Resume NextDim oStyle As Style, countcount = 0For Each oStyle In ActiveDocument.Styles' 只检查用户自定义样式If oStyle.BuiltIn = False ThenWith ActiveDocument.Content.Find.ClearFormatting ' 在搜索选定内容之前从查找条件中取消格式限定.Style = CVar(oStyle.NameLocal) ' 返回指定对象的样式.Execute FindText:="", Format:=True ' FindText 目标文本,""仅搜索格式; Format 找格式而非文本。If .Found = False ThenoStyle.Deletecount = count + 1End IfEnd WithEnd IfNext oStyleMsgBox "共删除【" & count & "】个未使用样式"End Sub

别一个版本来源于:https://zhuanlan.zhihu.com/p/306579510

Sub 删除未使用样式organizerdelete()
'https://word.tips.net/T001337_Removing_Unused_Styles.htmlOn Error GoTo ErrorHandler
Dim oStyle As Style, i&
i = 0
For Each oStyle In ActiveDocument.Styles' 只检查用户自定义样式If oStyle.BuiltIn = False ThenWith ActiveDocument.Content.Find.ClearFormatting.MatchWildcards = False.Style = CVar(oStyle.NameLocal).Execute FindText:="", Format:=TrueIf Not .Found ThenApplication.OrganizerDelete _Source:=ActiveDocument.Path & "\" & ActiveDocument.Name, _Name:=oStyle.NameLocal, Object:=wdOrganizerObjectStylesi = i + 1End IfEnd WithEnd If
Next oStyle
MsgBox "共删除" & i & "未使用样式"Exit Sub '退出过程'发生错误时处理
ErrorHandler:i = i - 1 '发生一次错误则减1Resume NextEnd Sub

判断样式是否存在

Sub checkStyle()Dim styleName As String '声明字符串styleName = "图片"      '赋值If styleIsExists(ThisDocument, styleName) ThenThisDocument.Styles(styleName).DeleteMsgBox "文档【" & ThisDocument.Name & "】存在【" & styleName & "】样式" & vbCr & "已自动删除!", 64, "检测样式是否存在?"ElseSet myStyle = ActiveDocument.Styles.Add(Name:=styleName, Type:=wdStyleTypeParagraph)MsgBox "文档【" & ThisDocument.Name & "】不存在【" & styleName & "】样式" & vbCr & "已自动创建!", 16, "检测样式是否存在?"End IfEnd Sub' 判断样式是否存在
Function styleIsExists(myDocument As Word.Document, styleName As String) As BooleanOn Error Resume NextstyleIsExists = myDocument.Styles(styleName).NameLocal = styleNameEnd Function
  • WORD 中的 WDSTYLETYPE (枚举)
名称 说明
wdStyleTypeCharacter 2 正文字符样式。
wdStyleTypeList 4 列表样式。
wdStyleTypeParagraph 1 段落样式。
wdStyleTypeTable 3 表格样式。

参考资料

微软Docs 》Office 》VBA 》参考 》Word 》对象模型 》Style

VBA 学习笔记 Word样式处理相关推荐

  1. VBA学习笔记(9)--生成点拨(1)

    VBA学习笔记(9)--生成点拨(1) 说明(2017.3.26): 1. 还没写完,写到新建文件夹了,下一步新建word,重命名,查找点拨,把点拨复制进去,因为要给点拨编号,应该会很麻烦 1 Pub ...

  2. android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题

    50_样式与主题 android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题 2013/5/12 50_样式与主题 ----------------- android样式和主题(st ...

  3. VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿

    VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿 1.对每行数据按照类别所在列进行循环,判断某类别的工作簿是否存在: 2.如果不存在,则新建工作簿并将该行数据复制粘贴: 3.如果存在则打开 ...

  4. 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮

    陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...

  5. VBA学习笔记2:将工作簿的表格拆分为工作簿

    VBA学习笔记2:将工作簿的表格拆分为工作簿 1.判断原有工作簿的sheet是否需要拆分: 2.如需拆分则创建新表: 3.将原sheet复制到新建的工作簿中. 效果如下: 代码执行前,有1个工作簿,需 ...

  6. VBA学习笔记8:单元格的合并与拆分

    VBA学习笔记8:单元格的合并与拆分 如下图,需要实现1图到2图(单元格合并),或2图到1图(单元格拆分). 1图: 2图: 合并单元格代码如下: Sub 合并单元格()Dim k%, rng As ...

  7. VBA学习笔记3:合并同一工作簿下的多个表格

    VBA学习笔记3:合并同一工作簿下的多个表格 1.建立一个新的汇总表: 2.将其他sheet数据复制到汇总表中. 效果如下: 需要将3个sheet的表的数据汇总起来 汇总后的数据: 代码如下: Sub ...

  8. VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接

    VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接 1.将文件夹中的xlsx文件名复制到新工作簿: 2.将文件夹中的xlsx数据簿中的sheet复制到新表并重命名: 3.插入超 ...

  9. Excel VBA 学习笔记13:单元格的格式

    Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...

  10. VBA 学习笔记 - 网络请求

    VBA 学习笔记 - 网络请求 Microsoft.XMLHTTP MSXML2.serverXMLHTTP.6.0 WinHttp.WinHttpRequest.5.1 参考资料 Microsoft ...

最新文章

  1. Mschart图表制作
  2. C++编程教程教你如何从零学起(免费高速下载)TXT文档分享
  3. js原生方式实现bind方法
  4. ubuntu7.10下配置java 6和mysql
  5. 胎压检测c语言pta,汽车胎压检测系统的设计与实现
  6. python写qq群自动回复机器人_GitHub - HZQHZA/wxpy: Python 写 微信聊天 根据 自动回复 接入机器人 等等.......
  7. 金蝶EAS-BOS二开详细过程
  8. 题解 P1621 【集合】
  9. 调查计算机游戏的目的有哪些,幼儿成长手册我参与的调查_计算机游戏对幼儿成长影响的调查分析...
  10. 柱状图怎么设置xy轴_excel表格xy轴数据-怎么做用excel设置xy轴
  11. C语言从入门到精通第17天(指针和数组联用)
  12. MIUI 10——启用与关闭开发者模式/开发者选项
  13. C# 特性类[笔记]
  14. 开源中文切词工具介绍
  15. GIT(分布式版本控制系统)入门
  16. Eclipse将项目部署tomcat的webapps目录
  17. 【Oracle】TRUNC:获取去年年初和年末,获取月初和月末;
  18. Nginx+Keepalived+LVS集群实战
  19. Unity VideoPlayer播放切换视频卡上一帧问题
  20. 你不必使用弱引用以避免内存泄漏

热门文章

  1. java Socket 编程实例
  2. dll加载失败,返回126错误
  3. 读书笔记《Unix编程艺术》一
  4. 纸牌、挖金子源码链接
  5. Magnific Popup – 免费的响应式 jQuery Lightbox 插件
  6. 安卓源码下载的环境搭建
  7. Python--网页更新监控工具
  8. opencv打开Lena图像,并且将Lena改成单通道的图片
  9. 内网渗透(一)——本机信息收集
  10. 重庆北大青鸟【学员心声】任何一次的考试,都是一次珍贵的蜕变机会