我正在开发一个需要从目录中的多个文件中提取信息的项目。它有效,除非它进入新文档,MS Word在页面上闪烁。我使用win32com.client并将.Visible设置为false,但我仍然可以获得程序打开的每个文件的闪存。
wordapp是一个全局变量
wordapp = win32.Dispatch('Word.Application')
wordapp.Visible = False
for files in os.listdir("."):
if files.endswith(".docx") or files.endswith('.doc'):
WordtxtExtract(files, 1);
...在WordtxtExtract中......
wordapp.Documents.Open(os.path.abspath(DataFile))
doc = wordapp.ActiveDocument
for TableCnt in range(1, doc.Tables.Count):
DataFromTables(PrgDataCollection, doc, TableCnt)
答案 0 :(得分:0)
在尝试使用我使用for循环将文本插入到Word Doc中的方法时,我遇到了类似的问题。似乎文件已经在单词中打开了,尽管当for循环在文件已经打开后再次遍历wordapp.Documents.Open时,wordapp本身不可见,但wordapp变得可见。在WordtxtExtract方法的 init 中使用以下内容。
if self.wordApp.Documents.Count < 1:
self.doc = self.wordApp.Documents.Open(self.path)
print('opened doc')
else:
self.doc = self.wordApp.ActiveDocument
print('Did not open doc')
至少对我的情况有用,而且与你的情况非常相似。我希望这有助于某人因为我的搜索,并将我的大脑绞尽脑汁解决这个问题。
注意:如果您打开另一个单词doc,它会将其作为活动文档。