Замена текста в колонтитуле макросом - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! В ходе разработки проектов возникла необхоидмость создавать большое количество пояснительных записок. Иными словами - создание большого количества документов word по шаблону. Макрос ищет нужную комбинацию символов и заменяет его на заданное значение или текст из ячейки в экселе. Однако возникла проблема: дело в том, что в проекте используется колонтитул для описания проекта (таблица). В этой таблице так же есть значения, которые должны меняться, однако макрос этого не делает. Подскажите пожалуйста, что необходимо добавить в макрос?
Листинг программы
  1. Sub СформироватьПроекты()
  2. ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
  3. НоваяПапка = NewFolderName & Application.PathSeparator
  4. Dim row As Range, pi As New ProgressIndicator
  5. r = Cells(Rows.Count, "A").End(xlUp).row: rc = r - 2
  6. If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub
  7. pi.Show "Формирование проектов": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
  8. pi.StartNewAction , s1, "Запуск приложения Microsoft Word"
  9. ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application ' c подключением библиотеки Word
  10. Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application") ' без подключения библиотеки Word
  11. For Each row In ActiveSheet.Rows("3:" & r)
  12. With row
  13. ФИО = Trim$(.Cells(1))
  14. Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов
  15. pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
  16. Set WD = WA.Documents.Add(ПутьШаблона): DoEvents
  17. pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
  18. For i = 1 To КоличествоОбрабатываемыхСтолбцов
  19. FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))
  20. ' так почему-то заменяет не всё (не затрагивает таблицу)
  21. 'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True
  22. pi.line3 = "Заменяется поле " & FindText
  23. With WD.Range.Find
  24. .Text = FindText
  25. .Replacement.Text = ReplaceText
  26. .Forward = True
  27. .Wrap = 1
  28. .Format = False: .MatchCase = False
  29. .MatchWholeWord = False
  30. .MatchWildcards = False
  31. .MatchSoundsLike = False
  32. .MatchAllWordForms = False
  33. .Execute Replace:=2
  34. End With
  35. DoEvents
  36. Next i
  37. pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
  38. WD.SaveAs Filename: WD.Close False: DoEvents
  39. p = p + a
  40. End With
  41. Next row
  42. pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
  43. WA.Quit False: pi.Hide
  44. msg = "Сформировано " & rc & " проектов. Все они находятся в папке" & vbNewLine & НоваяПапка
  45. MsgBox msg, vbInformation, "Формирование ПРОЕКТОВ прошло успешно"
  46. End Sub

Решение задачи: «Замена текста в колонтитуле макросом»

textual
Листинг программы
  1. WA.ActiveWindow.ActivePane.View.SeekView = 9  ' активировать непервый нижний колонтитул
  2. With WA.Selection.Find
  3. ' ...
  4. End With
  5. WA.ActiveWindow.ActivePane.View.SeekView = 9  ' активировать непервый верхний колонтитул
  6. With WA.Selection.Find
  7. ' ...
  8. End With
  9. WA.ActiveWindow.ActivePane.View.SeekView = 0 ' вернуться в тело документа

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут