900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python使用win32com复制word的某一页然后粘贴到新的word页面中

python使用win32com复制word的某一页然后粘贴到新的word页面中

时间:2020-03-27 04:04:44

相关推荐

python使用win32com复制word的某一页然后粘贴到新的word页面中

整体思路为:如果复制第2页。1.先跳到word的第2页 然后光标会在第2页最开始的位置。2.记录此时光标的位置。3.再跳到word的第3页,此时光标在第3页开始位置,如果这时候复制会带着复制第3页 相当于2个页面。4.光标往左移动一下,切换到第3页结尾。(这里应该也有方法直接跳到该页结尾,懒得再翻文档了。。)5.再次记录光标位置。6.最后选中两个位置。7.复制再到新的word上粘贴。

会有如下问题,指定页和总页数一样,这时候就全选光标向右移,记录位置 相当于word结尾处,再全选,复制,粘贴。

多个页面的时候也是相似的处理方法,总体就是记录当前的坐标和结尾的坐标。

另附官网vb链接Word (Pages) | Microsoft Docs

好了 代码如下:

import win32comfrom win32com.client import Dispatchimport os# 指定copy页page_n = 2word = win32com.client.Dispatch('Word.Application')word.Visible = 1 # 后台运行,不显示word.DisplayAlerts = 0 # 不警告#path = # word文件路径doc_add = word.Documents.Add()doc_new = word.Documents.Open(r'C:\Users\xx\Desktop\5.doc')doc = word.Documents.Open(r'C:\Users\xx\Desktop\2.doc', False, False, False, "123")# wordpages = doc.ActiveWindow.Panes(1).Pages.Countif page_n > pages:print("指定页索引超出已有页面")else:# 123 是word密码 没有则删除或者为''objRectangles = doc.ActiveWindow.Panes(1).Pages(page_n)# 移动来doc.Application.ActiveDocument.Range().GoTo(1, 1, page_n).Select()# 记录位置start = word.Selection.Start.numeratordoc.Application.ActiveDocument.Range().GoTo(1, 1, page_n+1).Select()# 往左移一下word.Selection.MoveLeft()if pages==page_n:doc.Range().Select()word.Selection.MoveRight()end = word.Selection.Start.numeratorelse:end = word.Selection.Start.numeratordoc.Range(start, end).Select()word.Selection.Copy()doc_new.Application.ActiveDocument.Range().Paste()

多个页面的时候则为下面的代码

import win32comfrom win32com.client import Dispatchimport os# 指定copy页page_n = 2word = win32com.client.Dispatch('Word.Application')word.Visible = 1 # 后台运行,不显示word.DisplayAlerts = 0 # 不警告#path = # word文件路径doc_add = word.Documents.Add()doc_new = word.Documents.Open(r'C:\Users\xx\Desktop\5.doc')doc = word.Documents.Open(r'C:\Users\xx\Desktop\2.doc', False, False, False, "123")# wordpages = doc.ActiveWindow.Panes(1).Pages.Countlist_len = [2,4]objRectangles = doc.ActiveWindow.Panes(1).Pages(list_len[0])# 移动doc.Application.ActiveDocument.Range().GoTo(1, 1, list_len[0]).Select()# 记录位置start = word.Selection.Start.numeratordoc.Application.ActiveDocument.Range().GoTo(1, 1, list_len[-1] + 1).Select()# 往左移一下word.Selection.MoveLeft()if pages == list_len[-1]:doc.Range().Select()word.Selection.MoveRight()end = word.Selection.Start.numeratorelse:end = word.Selection.Start.numeratordoc.Range(start, end).Select()word.Selection.Copy()doc_new.Application.ActiveDocument.Range().Paste()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。