Я пытаюсь вставить текст в нижний колонтитул, у меня возникают проблемы с вставкой символа после вставленного текста, чтобы я мог легко заменить этот текст при последующих вызовах кода.
В следующем коде Word будет аварийно завершать работу после вызова подпрограммы, я подозреваю, что это происходит сбой в строках oRng.Collapse wdCollapseEnd
и oRng.InsertSymbol
, возможно, он не может выйти из цикла?
Public Sub UpdateFooter()
Dim objRange As Range
Dim strCurrentView As String
Dim objSection As Section
Dim objHeaderFooter As HeaderFooter
Dim rng As Word.Range
' Turn off screen updating
Application.ScreenUpdating = False
' Loop through sections
For Each objSection In ActiveDocument.Sections
Set rng = objSection.Footers(Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage).Range
Dim oRng As Word.Range
Set oRng = rng
oRng.Collapse wdCollapseStart
' Find existing U+61472 symbol, which means footer text has already been inserted
With oRng.Find
.ClearFormatting
.Text = ChrW(61472)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While (.Execute = True) = True
If .Found = True Then
' Found, select first word through to and including the symbol
oRng.MoveStart wdWord, -1
oRng.MoveEnd wdCharacter, 1
Else
' Not found
oRng.MoveEnd wdStory, 1
End If
' Insert new text
oRng.Font.Name = "Arial"
oRng.Font.Size = 8
oRng.Text = "TEST_TEXT"
' Insert symbol after the new text so that we can replace in future
'oRng.Collapse wdCollapseEnd
'oRng.InsertSymbol Font:="Wingdings", CharacterNumber:=-4064, Unicode:=True
Loop
End With
Next
' Set view back to Print View and enabled screen updating
ActiveDocument.PrintPreview
ActiveDocument.ClosePrintPreview
Application.ScreenUpdating = True
End Sub
Этот код выполнит поиск для символа U + 61472, если будет найден текст от начала строки до символа, и текст будет заменен, если символ не найден, то текст будет вставлен .
Если я уберу
oRng.Collapse wdCollapseEnd
oRng.InsertSymbol Font:="Wingdings", CharacterNumber:=-4064, Unicode:=True
Текст нижнего колонтитула вставляется, но без символа при сохранении в будущем текст будет вставляться как дубликаты вместо замены.
Как бы я мог вставить текст в выбранный диапазон, а затем добавить символ после вставленного текста?