Редактирование заголовка MS Word с помощью win32com

Я пытаюсь отредактировать заголовок документа MS Word, который имеет существующий заголовок, используя win32com.
Я пробовал это, чтобы отредактировать заголовок страницы:

import win32com.client as win32

word = win32.gencache.EnsureDispatch('Word.Application')
doc=word.Documents.Open("C:\\a.docx")
word.Visible = True
word.ActiveDocument.Sections[0].Headers[win32.constants.wdHeaderFooterPrimary].Range.Text='test text'
word.ActiveDocument.Save()
doc.Close(False)
word.Application.Quit()

Но никакого эффекта (заголовок не изменился) !!
Как правильно редактировать заголовок MS Word через win32com?


person Ariyan    schedule 03.01.2013    source источник
comment
Смелая душа ... Индексы считали? По крайней мере, в макросах и C # они основаны на 1, а не на 0. Вы также должны иметь возможность получать заголовок по целочисленному индексу. Я имел дело только с Word через C # и VB, поэтому не уверен, что это актуально   -  person Sten Petrov    schedule 04.01.2013
comment
Я думаю, что Стен Петров может быть прав. Я давно не использовал win32com, но в целом ни он, ни VB ничего умного с индексами не делают; интерфейс VB основан на 1, потому что базовый интерфейс IDispatch и, следовательно, интерфейс win32com.   -  person abarnert    schedule 04.01.2013


Ответы (1)


Используйте круглые скобки вместо квадратных в этой строке вместе с индексированием с отсчетом от 1. Все в COM - это вызов функции или свойство.

word.ActiveDocument.Sections(1).Headers(win32.constants.wdHeaderFooterPrimary).Range.Text='test text'
person Mark Tolonen    schedule 03.01.2013