Отредактировать разнотипную информацию в многостраничном документе MS Word

Дано: Большой документ MS Word страниц, скажем 60. Требуется: Изменить некоторую информацию в этом документе: значения графиков, некоторые числа в таблицах, и в паре мест текст. То есть, сделать этот документ неким подобием шаблона. Кто сталкивался с подобной задачей, предложите пожалуйста как это можно сделать.п.с. создавать таблицы всевозможной сложности, графики, менять размеры\начертание\цвет шрифта, вставлять изображения умею. Но тут, как понимаете, генерация документа с нуля нецелесообразна - слишком большой объем, ради пары изменений.
10 ответов

Pe4eNEG, используйте закладки в доккменте гу или текстоаые поля как метки


Yury Komar, отлично с полями придумано великолепно! Но как изменить некоторые значения имеющихся графиков?p.s.: пример изменения полей с названием username и activities
  Public  Shared Sub CreateDoc(ByVal _filename As String)
        Dim oWord As Word.Application
        Dim oDoc As Word.Document
        oWord = New Word.Application
        oWord.Visible = False
        oDoc = oWord.Documents.Open(IO.Path.Combine(Form_anket.AppPath, "template.docx"))
        With oDoc
            .Variables("username").Value = "Иванов Иван"
            .Variables("activities").Value = "Генеральный директор"
 
        End With
        oDoc.SaveAs(FileName:=_filename)
        oDoc.Close(True)
        oWord.Quit(True)
    End Sub
переключение между показом полей и их значений производится нажатием ALT+F9


Pe4eNEG, а как добавляли эти переменные в документ?


Выбираем ленту "Вставка" на ней группу "Текст" -> "Экспресс блоки" -> "Поле"
Кликните здесь для просмотра всего текста
Категорию поля "автоматизация" тип поля DocVariable, пишем название, которое хотим использовать.
Кликните здесь для просмотра всего текста
Тыкаем ок. Чтобы отобразить поля в документе жмем ALT+F9
Кликните здесь для просмотра всего текста


Понял. А я имел ввиду другие поля... На вкладке "Разработчик" TextField... но к нему по имени нельзя обратиться вроде. Только по его порядковому номеру, ну или на худой конец - использовать закладки "Bookmarks".Насчет графиков, думаю вам нужно получить объект уже имеющегося графика, и его редактиррвать, в вашем случае - изменять какие-то его значения.


Yury Komar, я про них даже не подумал) плюс они выделяются в тексте, а эти поля не видно.


Pe4eNEG, чтобы не выделялись, точнее фон был прозначным, можно применить Shading, дамже есть рядом, буква "А" перечеркнутая. Тогда не отлечишь от обычного текста...Далее, плюсом таких TextBox'ов, является то, что при блокировке документа, текст этих блоком можно менять, как для шаблонов - очень хороший вариант.


Только по его порядковому номеру
тут недоглядел, оказывается можно обращаться к полям TextFileds и по их имени, предварительно задав имя, вызвав диалог настроек поля по двойному клику по этому полюСам код изменения значения в поле:
oDoc.FormFields("Mark1").Result = "Ваш текст"


Так же можно и прочитать что записано в этом поле таким образом:
oDoc.FormFields("Mark1").Result 'Возвращает содержимое текстового поля


Все, спасибо) С всем разобрался. Пошел по пути наименьшего сопротивления: Графики генерил программно и экспортировал в изображения. Закладки предварительно добавляем в Word'е через ленту "Вставка" -> "Ссылки" -> "Закладка". И активируем пункт
For i As Integer = 1 To 9
   _ImagePath = IO.Path.Combine(AppPath, String.Format("Chart_{0}.jpg", i))
   oDoc.Bookmarks.Item("Graph" & i).Range.InlineShapes.AddPicture(_ImagePath)
Next