Pywin32 обновляет документ word через планировщик

#python #sql-server #pywin32

#python #sql-сервер #pywin32

Вопрос:

У меня есть простой код, который открывает документ word, обновляет поля в нем, а затем закрывает его. Этот код работает корректно, когда я запускаю его вручную, однако, когда я запускаю его через агент SQL Server, я получаю сообщение об ошибке. Пользователь, с которым запускается агент SQL Server, — это тот же пользователь, с которым я вошел в систему при запуске вручную. Я знаю, что агент может «видеть» документ, потому что более ранний код, используемый в задаче, фактически создает этот документ.

Код:

 import win32com.client
word = win32com.client.DispatchEx("Word.Application")
filePath = "\\network\data\file.docx"
doc = word.Documents.Open(filePath)
doc.TablesOfContents(1).Update()
doc.Close(SaveChanges=True)
word.Quit()
  

Ошибка:

Выполняется как пользователь: ДОМЕН Пользователь. Трассировка (последний последний вызов):
файл «\networkdatafile.docx «, строка 8, в
документе doc.TablesOfContents(1).Update() Ошибка атрибута: объект ‘NoneType’ не имеет атрибута ‘TablesOfContents’

Почему может произойти такое поведение?

Ответ №1:

Для тех, кто в будущем может столкнуться с этой проблемой, я исправил ее следующим образом:

  1. Откройте dcomcnfg Перейдите к службам компонентов> Компьютеры> Мой компьютер> Конфигурация DCOM> Документ Microsoft Word 97-2003
  2. Щелкните правой кнопкой мыши, выберите Свойства
  3. Выберите вкладку Identity
  4. Выберите «Интерактивный пользователь»