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类型,沟通复杂导致的。
具体正则的语法,可以查看文末的参考文章,下面仅列出部分语法