如下图, 有一个 word 文档, 我想删除它自带的乱七八糟的样式, 手动删除又太麻烦, 想用 vb 来批量删除
vb 代码如下, 执行后并不生效, 请问该如何修改
Sub Reset_All_Styles() Dim sty as Style For Each sty In ActiveDocument.Styles If sty.BuiltIn = False Then sty.Delete Next styEnd Sub
你的VB脚本的问题在于,你试图删除所有非内置的样式,但sty.BuiltIn
属性实际上返回的是样式是否是内置的,而不是样式是否由用户创建。这意味着你的If
语句实际上没有正确地识别出用户创建的样式。
此外,即使sty.BuiltIn
能够正确地识别出用户创建的样式,sty.Delete
也会引发错误,因为Word不允许你直接删除一个正在使用的样式。你需要先确保没有任何文本正在使用这个样式,然后才能删除它。
下面是一个修改后的VB脚本,它会遍历所有的样式,检查是否有文本正在使用这个样式,如果没有,则删除它:
Sub Reset_All_Styles() Dim sty As Style Dim i As Integer ' 首先,遍历所有的样式,记录所有用户创建的样式的名字 Dim userStyles As New Collection For Each sty In ActiveDocument.Styles If Not sty.BuiltIn Then userStyles.Add sty.NameLocal, CStr(userStyles.Count) + 1 End If Next sty ' 然后,再次遍历所有的样式,如果样式在用户创建的样式列表中,并且没有文本正在使用它,就删除它 For i = 1 To userStyles.Count For Each sty In ActiveDocument.Styles If sty.NameLocal = userStyles(i) Then If sty.InUse = False Then sty.Delete End If Exit For End If Next sty Next iEnd Sub
这个脚本首先遍历所有的样式,将用户创建的样式的名字添加到一个集合中。然后,它再次遍历所有的样式,如果样式在用户创建的样式列表中,并且没有文本正在使用这个样式,就删除它。
注意,这个脚本只能删除那些在当前文档中没有被使用的样式。如果有文本正在使用某个样式,那么这个样式就不能被删除。如果你想要删除正在使用的样式,你需要首先更改这些样式,或者删除使用这些样式的文本。
我需要一个脚本,它迭代通过一个word文档,并改变以下标题样式或图像的段落样式为自定义样式,没有第一行缩进。 目标很简单:我希望段落的第一行缩进,但不是如果段落是在标题行或图像后面。由于这是一个很大的文档,而且我经常得到这些文档,所以我想要某种自动化,而不是试图手工完成这件事。 所以我想写一个脚本,它在段落中迭代,并在标题样式或图像之后将样式从“段落”更改为“没有缩进的段落”。
本文向大家介绍word-wrap、word-break和white-space有什么区别?相关面试题,主要包含被问及word-wrap、word-break和white-space有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 :现在改为了;用于控制单词在超出其包裹元素时是否中断单词换行; :用于处理元素中的空白符号(包括空格,换行符,制表符,元素,文字自然换行); :用于控制单词在换行时
if instr(str,"月")<0 then 请问不包含这样写为什么无效。 我希望不包含,该怎样写。 谢谢。
问题内容: 我在此阅读了bash手册页,但我不了解其中的区别。我对它们进行了测试,它们似乎产生了完全相同的结果。 如果未通过命令行参数设置值,我想设置变量的默认值。 上面的代码回显if 为null并回显if不为null的值。这样: 根据Bash手册页, 使用默认值。如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。 分配默认值。如果参数未设置或为空,则将单词扩展指定给参数。然后
我有一个扩展JTextField的类,我想让CTRL-Shift-O做一些事情。我一直在听 在e.isControlDown()和e.isShiftDown()的帮助下,这种方法运行良好。但我注意到字段中的文本也在从左边向右边移动。显然,这是JTextField的默认行为。所以我在So上找到了这个线程,它似乎很有帮助: 如何禁用JTextField中的默认textfield快捷方式 尽管Syste
我试图找出如何设置整个word文档的字体样式,完全是通过选择菜单中预设的样式来完成的: 因为我已经制作了一个宏来逐字转换整个文档,所以我试图用它来完成的是更改所有预设磁贴(正常、无间距、标题、标题1等)。)以匹配现有的预设,而不是旧的预设(旧字体)。 这可能吗?我要修改什么对象来实现这一点?