【问题标题】:How to access a named List Style in MS Word from VBA?如何从 VBA 访问 MS Word 中的命名列表样式?
【发布时间】: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
  • 另外,你对ActiveDocumentSelection 的使用暗示我你的代码很可能充满了这些,你应该避免这种情况。大多数时候你不需要选择任何东西来在 VBA 中做某事。 @Neits
  • @RaymondWu,非常感谢,恰好在发布这个问题后我有一个“灯泡”时刻,我得到了相同的答案。但是,如果您想发布答案,我会对其进行投票并将其标记为解决方案。
  • @RaymondWu,真的,我的文档被ActiveDocument.ListTemplates 集合中的ListTemplate 对象污染了。
  • 对你有好处!如果ActiveDocument 实际上是运行代码的文档,则可以使用ThisDocument 代替。否则,您可以声明一个Document 对象变量,在开始时将ActiveDocument 设置为它,然后在其余代码中引用该变量。我不会发布答案,因此您可以在几天后接受自己的答案(我忘记了多少天)

标签: vba ms-word


【解决方案1】:

我发现我们定义的列表样式是ActiveDocument.Styles集合的成员,所以ActiveDocument.Styles("MyStyle").ListTemplate可以访问列表模板。

因此:

    Selection.Range.ListFormat.ApplyListTemplateWithLevel _
        ListTemplate:=ActiveDocument.Styles("MyStyle").ListTemplate, _
        ApplyLevel:=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多