#vba #ms-word
#vba #ms-word
Вопрос:
Я пытаюсь добавить текст к пустым отформатированным маркерам в документе Word, однако, похоже, я не могу найти ни одного успешного способа сделать это. Я не очень хорош в VBA, я просто использую его для автоматизации повторяющихся отчетов.
Это формат вспомогательных файлов VBA, который я использовал для поиска и замены текста, я просто не могу найти способ настроить добавление в маркеры:
Private Sub FixedReplacements()
Dim Rng As Range
Dim SearchString As String
Dim EndString As String
Dim Id As String
Dim Link As String
Set Rng = ActiveDocument.Range
Rng.Find.ClearFormatting
Rng.Find.Replacement.ClearFormatting
With Rng.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Rng.Find.Execute Replace:=wdReplaceAll
End Sub
Цель, которую я поставил для пустых маркерных точек, состоит в том, чтобы они отображали что-то вроде «Дополнительной информации нет». << Просто пример.
Комментарии:
1. Первое, что вам нужно определить, является ли маркер символом, вставленным вручную, или он является результатом формата стиля. Затем вам нужно включить символ маркированной точки в текст поиска.
2. @Freeflow эти маркеры представляют собой форматированные маркеры, найденные непосредственно в word. Я не уверен, как реализовать это в скрипте, можете ли вы дать мне какую-нибудь идею о том, как это сделать?
Ответ №1:
То, как это можно сделать, во многом зависит от того, как были вставлены маркеры. Нет способа выполнить поиск непосредственно в маркере. В комментарии упоминается
маркеры — это форматированные маркеры, найденные непосредственно в word.
В этом случае настройкой по умолчанию будет форматирование абзацев в List Paragraph
стиле. Если это так, то здесь Find
можно выполнить поиск абзацев с использованием этого стиля. Find
Код в вопросе тогда выглядел бы следующим образом. (Обратите также внимание на изменения в свойствах Format
и Wrap
.)
With Rng.Find
.Text = "^p"
.Replacement.Text = "No further information.^p"
.Forward = True
.Style = "List Paragraph"
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Если для нанесения маркеров использовался другой стиль, то можно выполнить поиск по названию этого стиля. Имейте в виду, что имена стилей чувствительны к регистру.
В разделе Файл / Параметры / Дополнительно, Параметры редактирования, есть опция: Использовать обычный стиль для маркированных или нумерованных списков. Если это было активировано, то все становится очень сложным. Лучшее, что вы можете сделать, это попытаться соответствовать применяемому форматированию абзаца (отступы и т.д.).