Редактировать и добавлять содержимое в существующую таблицу нижнего колонтитула документа Word - PullRequest
1 голос
/ 01 июля 2019

У меня есть Word Doc с существующим колонтитулом. Внутри нижнего колонтитула есть таблица с информацией в некоторых ячейках. Я хотел бы знать код Excel VBA, который редактирует и добавляет больше содержимого в таблицу нижнего колонтитула (например, обновить информацию о ячейках или добавить информацию в пустые ячейки). Большая проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как сделать ссылку на положение ячеек внутри таблицы нижнего колонтитула.

enter image description here

Я работаю с Office 2013 и попробовал следующие подходы:

- wDoc.Sections(1).Footers(wdHeaderFooterPrimary)

- wDoc.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter

-   Set rngFooter = wDoc.Sections(1).Footers(wdHeaderFooterPrimary).Range
    With rngFooter
        .ParagraphFormat.Alignment = 1
        .Text = "Some text"
        .Move Unit:=wdColumn, Count:=1
        .Text = "More Text at center: hyperlink"
        .Move Unit:=wdColumn, Count:=1
        .Text = "Page 1 of 1"
        .Move Unit:=wdRow, Count:=1
        .Text = "New Text in empty cell"
        With .Font
          .Size = 9
          .Name = "Arial Narrow"
        End With
    End With

- wDoc.Sections(1).Footers.Select

В случае третьего подхода я получаю следующее:

Результат нижнего колонтитула третьего кода подхода

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Я нашел следующий подход, который решает мою первоначальную проблему:

    'Create a range from bookmark inside table cell
    Set firstRng = wDoc.Bookmarks("FirstCell").Range

    'Add or replace text in range created
    firstRng.Text = "Some text"

    'Create again the bookmark. It was deleted on the previous line 
    wDoc.Bookmarks.Add "FirstCell", firstRng

    Set secondRng = wDoc.Bookmarks("SecondCell").Range
    secondRng.Text = "More Text at center: hiperlink"
    wDoc.Bookmarks.Add "SecondCell", secondRng

    Set thirdRng = wDoc.Bookmarks("ThirdCell").Range
    thirdRng.Text = "Page 1 of 1"
    wDoc.Bookmarks.Add "ThirdCell", thirdRng

    Set fourthRng = wDoc.Bookmarks("FourCell").Range
    fourthRng.Text = "New Text in empty cell"
    wDoc.Bookmarks.Add "FourCell", fourthRng

    Set fifthRng = wDoc.Bookmarks("FifthCell").Range
    fifthRng.Text = "More New Text in empty cell"
    wDoc.Bookmarks.Add "FifthCell", fifthRng

Таблица нижнего колонтитула после кода запуска.

Чтобы вышеприведенный код работал, необходимо создать закладки ранее в документе Word.

Более того, этот метод работает для редактирования документа Word в любой позиции любого раздела файла.

0 голосов
/ 02 июля 2019

Для доступа к ячейкам таблицы в нижнем колонтитуле документа необходим объект Table.Оттуда к отдельным ячейкам можно получить доступ через их значения индекса ячейки.В приведенном ниже примере кода предполагается, что содержимое ячеек должно быть заменено , а не добавлено.

Примечание. Более правильно форматирование всего нижнего колонтитула не должно применяться напрямую.Вместо этого следует изменить определение стиля нижнего колонтитула стиль .

Dim rngFooter as Word.Range
Dim tbl as Word.Table
Dim rngCell as Word.Range

    Set rngFooter = wDoc.Sections(1).Footers(wdHeaderFooterPrimary).Range
    With rngFooter
        Set tbl = rngFooter.Tables(1)
        SEt rngCell = tbl.Cell(1,1).Range
        With rngCell
          .ParagraphFormat.Alignment = 1
          .Text = "Some text"
        End With
        Set rngCell = tbl.Cell(1,2).Range
        rngCell.Text = "More Text at center: hyperlink"

        Set rngCell = tbl.Cell(1,3).Range
        rngCell.Text = "Page 1 of 1"

        With .Font
          .Size = 9
          .Name = "Arial Narrow"
        End With
    End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...