有人能告诉我为什么在兼容模式下保存的 Word 文档上运行时,下面的第一行代码会抛出错误 445(对象不支持此操作)吗?第二行运行正常。
ActiveDocument.Hyperlinks(1).Range.Font.TextColor.RGB = RGB(1, 2, 3)
ActiveDocument.Hyperlinks(1).Range.Font.Color = RGB(1, 2, 3)
作为该问题的后续,第二行如何工作?根据 VBA 参考,Font 对象甚至没有“Color”属性,只有“ColorIndex”、“ColorIndexBi”和“TextColor”属性。
答案1
这种复杂性完全是由于 Office 团队提供的不完整的 Microsoft 文档造成的。
第二行是怎么工作的
字体颜色属性 (Excel)Font.Color property (Excel)
是 的一个真实属性Font
,即使它只在 Excel 中记录过。但正如您所发现的,它也适用于 Word。
为什么下面的第一行代码会引发错误 445
您问为什么TextColor.RGB
兼容模式下会出现错误。
“兼容模式”是指在旧版本Office支持的模式下工作。
字体.文本颜色 是 ColorFormat 对象.这里的关键词是目的。
对象应该是只读的,因为它是对象而不是属性。严格来说,您不应该能够更改和设置对象引用到其他内容(通常您不需要这样做),但您仍然可以修改其状态,即其属性。
显然,旧版本的 VBA 对对象和属性之间的区别存在一些混淆,因此对的引用TextColor
在内部翻译为现在所称的TextColor.RGB
。
在新版本中,对象和属性之间的区别得到了改进,因此.RGB
可以使用属性来获得更高的精度。
Microsoft 文档不能保证准确无误,因为它似乎是新旧文本的混合体。尤其是 Office 文档。很多时候,需要“尝试并观察”才能知道什么方法有效以及何时有效。