VBA代码未退出列表(MS Word)

时间:2018-02-21 02:27:08

标签: vba ms-word word-vba

编写一个宏来自动修复从我们使用的软件生成的MS Word文档中的释义间距问题。

目标:

  • 所有标准段落在间距之前和之后都有:send
  • 所有项目符号列表在间距之前和之后都有0pt

进度:
目前,我有一个功能可以将整个文档设置为3pt,然后浏览所有列表并将其更改为0pt。 (目前也有一个亮点,所以我可以很容易地看到什么被视为列表)。

它在某些部分很有用,但在其他部分(我假设我们使用的软件如何生成文档),列表不存在,它将继续格式化文本块并前往{{1当不需要时(见附图)。

目前的代码是:

3pt

工作:

Working

无效:

Not working

2 个答案:

答案 0 :(得分:2)

根据MSDN

  

列出对象:表示已应用于文档中指定段落的单个列表格式。

因此,如果您有多个列表中间包含一些非项目符号的段落,Range将从第一个列表的第一个项目开始,以最后一个列表的最后一个项目结束包括中间所有没有项目符号的段落。

要解决此问题,您需要分隔列表(右键单击项目符号并选择单独列表)。但是,您提到该文档是由某些软件生成的,因此可能不是一种选择。在这种情况下,您将不得不迭代每个Range的{​​{1}}的段落,并检查它是否有List表明它是一个列表项,否则它是一个非项目符号段落:

ListFormat.ListTemplate

答案 1 :(得分:0)

甚至在触及VBA之前:

  • 在文档中使用样式。
  • 将文档中样式的使用限制为仅限于文档中的样式 模板。
  • 在样式中设置间距。

如果在某个阶段您改变主意并希望使用6pt间距,则可以调整模板并重新应用它,而不是查找所有VBA代码并重新编写它。不仅如此,通过使用样式,您可以避免使用VBA代码,或者使用可能会干扰某些公司安全设置的启用VBA的文档。

哦,并设置公司结构,将模板的使用仅限于已批准的模板。