Python=3.9.6 / pywin32=301 / MS Word ver 2202 build 16.0.14931.20116
MS 檔案說可以通過Word.Font.highlighColor屬性設定“HighlightColor”,但我得到AttributeError。
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(這就是為什么我也嘗試了HighlightColor)。此外,對于顏色引數,需要一個整數,而它表示應該傳遞一個十六進制字串。我怎樣才能注意到這些差異?
uj5u.com熱心網友回復:
因為您正在使用win32com“Word.Application”物件,所以您需要參考 Word 物件模型,在此處找到(不在問題中鏈接的 Javascript API 參考中)。在此模型中,Font 物件沒有HighlightColor屬性,因此出現屬性錯誤。
在 Word VBA 中,您可以通過以下方式更改選擇突出顯示顏色:
Selection.Range.HighlightColorIndex = wdYellow
因此要在 Python 中查詢這個值:
print(word.Selection.Range.HighlightColorIndex)
并使用:
word.Selection.Range.HighlightColorIndex = win32.constants.wdYellow
我提到 VBA 的原因是 Python 中用于通過 win32com 控制 Word 的命令與 VBA 幾乎相同。因此,找出如何實作某事的一種快速方法是在 VBA 中記錄一個執行您想要的操作的宏,并檢查生成的 VBA 代碼以找出物件型別、屬性和方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438684.html
標籤:python-3.x ms-word pywin32 win32com
