我在Word 2013中有一个宏,该宏删除空格并调整页面宽度大小以确保表格适合。 当前,为了对文档进行这些更改,用户需要首先运行宏,并且只有在运行宏之后,才能在打印文档时确保所做的更改。
我想自动化运行宏的部分
这是为了格式化doc单词,以确保文档中的表格适合页面。
import os
import time
import win32com.client
from docx import Document
macro_to_run = 'PostProcess'
document =
wordapp.Documents.Open('C:\\Users\\sarvesa\\Downloads\\test_xrd.doc')
wordapp.run(document, macro_to_run)
document.save
document.close
回溯(最近通话最近): 文件“ filename_change.py”,第12行 wordapp.run(文档,macro_to_run) getattr 中的第516行“ C:\ Users \ sarvesa \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ win32com \ client \ dynamic.py” ret = self。 oleobj .Invoke(retEntry.dispid,0,invoke_type,1) pywintypes.com_error:(-2147352567,“发生异常。”,(0,“ Microsoft Word”,“ Run”不是属性。”,“ wdmain11.chm”,25342,-2146822426),无)
答案 0 :(得分:0)
提供的“ wordapp”是单词的实例,称为:
wordapp = win32com.client.DispatchEx("Word.application")
那么有两个问题: 1)您缺少“应用程序” 2)这些方法都是从VBA继承的,这意味着您需要使用该语法。这包括套管! 我也不得不在Google上搜索很多此类信息,并将其编译为工作脚本。我建议也阅读一些VBA教程。
尝试:
wordapp.Application.Run(macroName)
编辑:
另外,您的“ macro_to_run”可能不足。
您不仅需要指定模块名称,还需要指定要运行的Sub:
像"Normal.Module1.SubName"