Как установить замещающий текст в формат маркера при создании WordDoc из Excel с использованием VBA - PullRequest
0 голосов
/ 15 ноября 2018

Здравствуйте и спасибо заранее.

Я создаю очень сложный документ Word из Excelfile с использованием VBA.Должна быть возможность что-то активировать, и текст, написанный в ячейке, должен быть перенесен в слово document.Я это уже сделал.Но в некоторых частях он должен быть в формате Bullets.Прямо сейчас я использую теги, такие как «<< replacePoint1 >>» в Словарном шаблоне, нахожу и заменяю их на ReplacementText, используя что-то такое же простое, как однострочный код:

With WordDoc.Content.Find
   .Execute FindText:=ReplacementTextF, ReplaceWith:=ReplacementText, Replace:=2
End With

Но как я могуустановите для параметра replaceText маркер или число, подобное следующему:

  • ReplacementText еще текст здесь ......

    1. ReplacementText еще текст здесь.....

1 Ответ

0 голосов
/ 15 ноября 2018

Существует несколько возможных подходов. Можно было бы не использовать wdReplaceAll - вместо этого код выполнял бы один «поиск» за раз, применял требуемое форматирование, затем повторял цикл поиска / замены и снова и снова форматировал, пока ничего больше не было найдено. Есть много примеров такого подхода здесь, на переполнении стека и в Интернете в целом.

Быстрее использовать тот факт, что Word может применять определенные виды форматирования как часть функции замены. В пользовательском интерфейсе Word нажмите Ctrl + H, чтобы открыть диалоговое окно «Найти и заменить»; нажмите «Еще», затем нажмите «Формат», чтобы увидеть возможности. Пули и нумерация - это , а не выбор, здесь ... Но стили есть.

Если вы работаете с шаблоном для создания этих документов (настоятельно рекомендуется), определите марки / нумерацию, которые будут использоваться как стили в шаблоне. Если шаблон не используется, код может создавать определения стиля на лету.

Укажите имя стиля (с учетом регистра!) Как часть свойств Replacement, определенных для Find, и установите для свойства Format значение True. Что-то вроде:

Dim rngFind as Word.Range 'Object if late-binding
Set rngFind = WordDoc.Content
With rngFind.Find
  .ClearFormatting
  .Replacement.ClearFormatting
  .Replacement.Style = "My style"
  .Format = True
  .Execute FindText:=ReplacementTextF, ReplaceWith:=ReplacementText, Replace:=2
End With
...