每次读取 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."]
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."]