【发布时间】:2021-12-17 15:32:50
【问题描述】:
如果我在 MS Word 中创建多级列表样式,我可以给它命名。但是,当我使用 VBA 访问 ActiveDocument.ListTemplates 集合并查看 ListTemplate 对象上的 Name 属性时,未显示我定义的名称。
其实我发现ListTemplate对象的Name属性引用了Define new Multilevel list对话框中的ListNum字段列表名称。 p>
看来ActiveDocument.ListTemplates属性是一个列表模板的集合,其中一些与出现在文档中的列表有关,另一些与列表样式有关,还有一些尽管没有在文件。
那么,有谁知道是否可以使用 Word GUI 定义新的列表样式,将其命名(例如,“MyTemp”),然后通过引用该名称从 VBA 代码访问它,例如:
Selection.Range.ListFormat.ApplyListTemplateWithLevel _
listTemplate:=ActiveDocument.ListTemplates("MyTemp"), _
ApplyLevel:=1
【问题讨论】:
-
试试
ActiveDocument.Styles("MyTemp").ListTemplate -
另外,你对
ActiveDocument和Selection的使用暗示我你的代码很可能充满了这些,你应该避免这种情况。大多数时候你不需要选择任何东西来在 VBA 中做某事。 @Neits -
@RaymondWu,非常感谢,恰好在发布这个问题后我有一个“灯泡”时刻,我得到了相同的答案。但是,如果您想发布答案,我会对其进行投票并将其标记为解决方案。
-
@RaymondWu,真的,我的文档被
ActiveDocument.ListTemplates集合中的ListTemplate对象污染了。 -
对你有好处!如果
ActiveDocument实际上是运行代码的文档,则可以使用ThisDocument代替。否则,您可以声明一个Document对象变量,在开始时将ActiveDocument设置为它,然后在其余代码中引用该变量。我不会发布答案,因此您可以在几天后接受自己的答案(我忘记了多少天)