from win32com.client import Dispatch
word_path = r'D:\KKCap\1.docx'
app = Dispatch("Word.Application")
doc = app.Documents.Open(word_path)
app.Visible = 1
app.DisplayAlerts = 0
s = app.Selection
# 查找Aaaa 第一個出現的位置
s.Find.Execute('Aaaa')
# 設置為一級標題
s.Style = -2
print(s.Style)
Styles的返回參數,標題1、標題2、標題3分別為-2、-3、-4,頁眉為-32,標題為-63,其他見Styles文檔
使用s.Find.Execeute方法時,如果用到任意一個位置的參數,就必須要寫上前面的所有的參數,哪怕是注明參數也不行。下面分4種情況說明
1.查找15
s.Find.Execute(‘15’)
s.Find.Execute(FindText=‘15’)
2.使用正則查找1915或者2015這樣的字符串(從當前位置查找到結尾)
s.Find.Execute(“??15”, False, False, True)
s.Find.Execute(FindText=“??15”, MatchWildcards=True)
3.比上一條增加了循環查找功能
s.Find.Execute(“??15”, False, False, True, False, False, True, 1)
s.Find.Execute(FindText=“??15”, MatchWildcards=True, Forward=True, Wrap=1)
4.把15換成16
s.Find.Execute(“15”, False, False, False, False, False, True, 1, False, “16”, 2)
s.Find.Execute(FindText=“15”, ReplaceWith=“16”, Replace=2)
只所以不能省略參數的原因,可能是因為需要把python的參數數值,跨語言轉換到C++的COM類型,溝通復雜導致的。
具體正則的語法,可以查看文末的參考文章,下面僅列出部分語法
參考
https://zhuanlan.zhihu.com/p/67543981
極重要
https://www.xin3721.com/Python/python21722.html