使用Python退出Word文档时出现问题

3 投票
3 回答
3914 浏览
提问于 2025-04-16 19:10

这是我第一次使用这个,所以请多多包涵 :) 基本上我的问题是,我正在制作一个程序,它可以打开很多微软Word 2007文档,并从这些文档中的某个表格读取信息,然后把这些信息写入一个Excel文件里。总共有超过1000个Word文档。我已经把这些都弄好了,但唯一的问题是,当我运行代码时,它在打开每个文档后并没有关闭Word,我必须在程序运行结束后手动去打开Word,然后从首页菜单选择退出Word。另一个问题是,如果我连续运行这个程序,在第二次运行时,所有的东西都乱套了,无论选择哪个文档,它都会重复打印相同的内容。我觉得这可能和Word是如何决定哪个文档是活动的有关,比如说,它是不是还在打开上一次没有关闭的那个文档。总之,这里是我负责打开和关闭部分的代码,我就不把其他的部分烦扰你们了:

MSWord = win32com.client.Dispatch("Word.Application")
MSWord.Visible = 0
# Open a specific file
#myWordDoc = tkFileDialog.askopenfilename()
MSWord.Documents.Open("C:\\Documents and Settings\\fdosier" + chosen_doc)
#Get the textual content
docText = MSWord.Documents[0].Content
charText = MSWord.Documents[0].Characters
# Get a list of tables
ListTables = MSWord.Documents[0].Tables

------Main Code---------

MSWord.Documents.Close
MSWord.Documents.Quit
del MSWord

3 个回答

0

我觉得你需要在最后加一个 MSWord.Quit,放在删除之前或者替代删除。

1

在你调用 MSWord.Quit 之前,有没有试过用:

MSWord.ActiveWindow.Close

或者更简单的做法是直接这样:

MSWord.Quit

我不太明白你是想关闭一个文档还是整个应用程序。

1

简单来说,Python和VBA是两种不同的编程语言,所以这个:

MSWord.Documents.Close

相当于:

getattr(MSWord.Documents, "Close")

也就是说,你只是得到了一个方法对象,但并没有对它做任何事情。你需要用调用操作符(就是括号 :))来调用这个方法:

MSWord.Documents.Close()

同样适用于 .Quit

撰写回答