Проблема с выходом из Word документа с использованием Python - PullRequest
3 голосов
/ 08 июня 2011

Я впервые использую это, так что будьте добры :), в основном мой вопрос - я делаю программу, которая открывает много документов Microsoft Word 2007 и читает из определенной таблицы в этом документе и записывает эту информацию в файл Excelболее 1000 слов.У меня все это работает, но единственная проблема, когда я запускаю свой код, он не закрывает MSword после открытия каждого документа. Я должен вручную сделать это в конце выполнения программы, открыв слово и выбрав опцию «выходное слово» в главном меню.Другая проблема также в том, что если запустить эту программу последовательно при втором запуске, все идет к черту, она печатает одну и ту же вещь неоднократно, независимо от того, какой документ выбран.открытие последнего активного документа, который не был закрыт с последнего запуска.В любом случае, вот мой код для открывающей и закрывающей части, я не буду утомлять вас, ребята, остальными ::

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 ]

1 голос
/ 08 июня 2011

По сути, Python не является VBA, поэтому это:

MSWord.Documents.Close

эквивалентно:

getattr(MSWord.Documents, "Close")

т.е. вы просто получаете некоторый объект метода и ничего с ним не делаете.Вам нужно вызвать метод с оператором вызова (скобки :):

MSWord.Documents.Close()

Соответственно для .Quit.

1 голос
/ 08 июня 2011

До вашего MSWord.Quit вы пытались использовать:

MSWord.ActiveWindow.Close

Или, что еще проще, просто

MSWord.Quit

Я действительно не понимаю, пытаетесь ли вы закрыть документ илиприложение.

0 голосов
/ 08 июня 2011

Я думаю, вам нужно MSWord.Quit в конце (до и / или вместо del)

...