每次读取 Style 对象的 ParagraphFormat.Style 属性 都会使 Word 崩溃

Reading the ParagraphFormat.Style property of a Style object crashes Word every time

Word 365 ProPlus v1908 build 11929.20776 在 Win10Pro(1903,build 18362.30)机器上,i7-6600@2.6GHz,16G ram,

我正在尝试将范围对象格式与样式定义进行比较(标记在不使用样式的情况下应用的格式)。当我尝试读取样式对象(例如 "Normal" 样式)时,"ParagraphFormat" 对象的 "Style" 属性 每次都会导致 word 崩溃:

Set vPropVal=ActiveDocument.Styles("Normal").ParagraphFormat.Style

Set vPropVal=CallByName(ActiveDocument.Styles("Normal").ParagraphFormat,"Style",VbGet)(尽管对源对象和字符串 属性 名称使用变量)

如果我为 ActiveDocument.Styles("Normal") 添加一个 Watch,然后尝试展开 ParagraphFormat 属性,Word 会崩溃。

如果我尝试 运行 Debug.Print ActiveDocument.Styles("Normal").ParagraphFormat.Style.NameLocal 在模块或即时 window 中,Word 崩溃。

我可以(并且已经)跳过 ParagraphFormat 的样式 属性,但它遇到了问题并且不知道为什么或如何解决它。

我无法找到任何 Web 资源来深入了解 Style 对象的 ParagraphFormat 可能存在问题的原因。我非常感谢任何见解...

顺便说一句 - 我不是专业的编码员;我只是有一些中等能力。

发生崩溃的原因是 Word 中自 Word 2010 以来一直存在的错误(错误)。当您尝试在 Watch(或 Locals)中打开 Style 对象树的 ParagraphFormat 分支时 Window , Word 将尝试枚举所有成员及其值,并且会遇到同样的问题。

但是甚至在此之前,段落 Style 对象的 ParagraphFormat 属性 中的 .Style 值也不可用。即使是这样,期望它指向与您正在检查的相同的 Style 对象也不是没有道理的。如果您需要 Style 的 NameLocal,您可以直接从 ActiveDocument.Styles("stylename").NameLocal

获取

在 Word 2007 中,访问 .Style 的相同代码不会导致崩溃,但会引发错误 91 ("Object Variable or With block variable not set"),并且在 Watch 或 Locals windows 中检查会告诉您样式 属性 设置为 Nothing。

[FWIW Mac Word 2011 引发不同的错误 - 5934,"This operation is not supported by a duplicated ParagraphFormat object."]