Изменить номер страницы в нижнем колонтитуле в документе Word с помощью VBA - PullRequest
0 голосов
/ 22 октября 2018

Мне нужно изменить номер страницы с «1» на «—— 1 ——» (не короткий - поэтому я не могу просто изменить стиль номера страницы).Как я могу сделать это в VBA?

Я попробовал следующий код, но второй - - как-то не так.

Selection.HomeKey unit:=wdStory
 Selection.GoTo wdGoToPage, wdGoToNext, , "15 "
 If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
 ActiveWindow.Panes(2).Close
 End If
 If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow.ActivePane.View.Type = wdOutlineView Then
 ActiveWindow.ActivePane.View.Type = wdPrintView
 End If
 ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
 If Selection.HeaderFooter.IsHeader = True Then
 ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
 Else
 ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
Selection.WholeStory
Selection.Font.Size = 14
Selection.Font.Name = "宋体"
Selection.InsertAfter " —"
Selection.InsertBefore "— "
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Selection.HomeKey unit:=wdStory
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow.ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
Selection.WholeStory
Selection.Font.Size = 14
Selection.Font.Name = "宋体"
Selection.InsertAfter " —"
Selection.InsertBefore "— "
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

enter image description here

enter image description here

1 Ответ

0 голосов
/ 22 октября 2018

Похоже, что код в вопросе был сгенерирован с помощью макро-рекордера.SeekView не очень надежно или эффективно.Как правило, лучше работать непосредственно с объектом Word Range, а не Selection.Это быстрее, точнее и уменьшает «мерцание экрана».

В приведенном ниже примере кода используется этот принцип: он получает Range для текущей страницы Footer.Длинный тире символ с пробелами вставляется до и после всего содержимого нижнего колонтитула.Затем к этому содержимому применяется форматирование.

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

Sub InsertContentBeforeAndAfterPageNumber()
    Dim rngFooter As Word.Range
    Dim sCharToInsert As String

    Selection.GoTo wdGoToPage, wdGoToNext, , "15"
    sCharToInsert = "—"
    Set rngFooter = Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range
    With rngFooter
      .InsertBefore sCharToInsert & " "
      .InsertAfter " " & sCharToInsert
      .Font.Size = 14
      .Font.Name = "宋体"
    End With
End Sub
...