#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:
Для тех, кто в будущем может столкнуться с этой проблемой, я исправил ее следующим образом:
- Откройте dcomcnfg Перейдите к службам компонентов> Компьютеры> Мой компьютер> Конфигурация DCOM> Документ Microsoft Word 97-2003
- Щелкните правой кнопкой мыши, выберите Свойства
- Выберите вкладку Identity
- Выберите «Интерактивный пользователь»