«Документ используется» при открытии приложения Word

#powershell #ms-word

#powershell #ms-word

Вопрос:

Я хотел бы скопировать содержимое из docx в текстовый файл. У меня следующая проблема:

после $doc = $wd.Documents.Open($path) запуска открывается диалоговое окно, в котором говорится, что документ уже используется. Я должен вручную выбрать, чтобы открыть версию только для чтения, сохранить файл как новый файл или получить информацию, когда документ будет готов (стандартное сообщение Windows)
У меня нет открытого файла.

У меня есть решение для этого: я запускаю одну строку кода: Get-Process -Name "*word*" | Stop-Process

Мой вопрос: я уверен, что есть более элегантный способ сделать это правильно, не так ли? В моем решении запуск кода помешал бы мне использовать любой docx при запуске скрипта…

 $path="C:testTest.docx"
$destination="C:TestFile1.txt"

$wd = New-Object -COM 'Word.Application'

$doc = $wd.Documents.Open($path)

$content=$doc.Content.Text 

$doc.Close()

Set-Content -Path $destination -Value $content 
  

Комментарии:

1. Более элегантным решением было бы выяснить, что использует файл. Возможно, ваш тестовый код оставляет его открытым?

2. @DougMaurer Спасибо за подсказку! Я так не думал, причина $doc.Close() , но потом я понял, что необходимо завершить его с помощью `wd.Quit().

Ответ №1:

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

В дополнение к закрытию документа, также закройте экземпляр Word.

$wd.quit()

Кроме того, вы можете принудительно выполнить сборку мусора.

[System.GC]::Collect()