首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过HighlightColor( pywin32 )获得MS Word的“win32com”

无法通过HighlightColor( pywin32 )获得MS Word的“win32com”
EN

Stack Overflow用户
提问于 2022-03-07 06:29:12
回答 1查看 143关注 0票数 0

Python=3.9.6 / pywin32=301 / MS Word Ver2202构建16.0.14931.20116

Word.Font.highlighColor说“HighlightColor”可以通过AttributeError.属性设置,但我得到了AttributeError.

代码语言:javascript
复制
import win32com.client as win32

word = win32.gencache.EnsureDispatch("Word.application")
word.Visible = True
doc = word.Documents.Open(r"C:\Users\je\wordcolor\test.docx")
doc = word.ActiveDocument

para = doc.Paragraphs(1) # First paragraph
word.Selection.Start = para.Range.Start
word.Selection.End   = para.Range.End

# Getting current highlight color
print(word.Selection.Font.highlightColor) # THIS LINE INVOKES ATTRIBUTE ERROR

# Traceback (most recent call last):
#   File "C:\Users\je\wordcolor\test.py", line 13, in <module>
#     print(word.Selection.Font.highlightColor)
#   File "C:\Users\je\AppData\Local\Programs\Python\Python39\lib\site-packages\win32com\client\__init__.py", line 524, in __getattr__
#     if d is not None: return getattr(d, attr)
#   File "C:\Users\je\AppData\Local\Programs\Python\Python39\lib\site-packages\win32com\client\__init__.py", line 484, in __getattr__
#     raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr))
# AttributeError: '<win32com.gen_py.Microsoft Word 16.0 Object Library._Font instance at 0x2643474563520>' object has no attribute 'highlightColor'

我也尝试了HighlightColor,但结果是一样的。如果我设置它,它就没有反应。

另一方面,

文件和pywin32之间存在差异。例如,它说获得/设置字体颜色是Font.color,但实际上我需要Font.Color (这就是我也尝试过Font.Color的原因)。此外,对于颜色参数,需要一个整数,同时表示应该传递一个十六进制字符串。我怎么能注意到这些差异呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-07 08:43:54

因为您使用的是win32com和'Word.Application‘对象,所以您需要引用单词对象模型,找到这里 (而不是在问题中链接的Javascript引用中)。在此模型中,Font对象没有HighlightColor属性,因此出现了属性错误。

在Word VBA中,您可以通过以下方式更改选定的高亮颜色:

代码语言:javascript
复制
Selection.Range.HighlightColorIndex = wdYellow

因此,要在Python中查询此值:

代码语言:javascript
复制
print(word.Selection.Range.HighlightColorIndex)

并使用以下方法设置:

代码语言:javascript
复制
word.Selection.Range.HighlightColorIndex = win32.constants.wdYellow

我提到VBA的原因是,Python中用于通过win32com控制Word的命令与VBA几乎完全相同。因此,了解如何实现某些功能的一个快速方法是在VBA中记录一个宏,该宏可以做您想做的事情,并检查生成的VBA代码,以找出对象类型、属性和方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71377181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档