Автоматизация документ в word

Настраиваем подстановку текста из поля в документСтолкнулся с тем, что все инструкции связаны со сложной автоматизацией с использованием кучи каких-то файлов, экселя и его таблиц, связей документов и так далее. Всё можно сделать гораздо проще!

Автозаполнение документа или договора Word Без Excel – как это сделать?

Сколько же я намучался, забивая запросы типа “как сделать автозаполнение word без экселя” или “заполнение документа значением поля” или “word значение поля в текст автоматически“. На самом деле всё оказалось не так сложно, как я изначально предполагал.

пример автоматическое заполнение Word из полей
Да, можно делать очень полезные связки документов, когда мы заполняем эксель, а потом у нас шаблон ворда из него берет информацию. Но объяснить какому-нибудь муниципальному сотруднику как это делать – задача практически невозможная.

Так вот, всё что нам потребуется – это Microsoft Word Документ. В нем мы создадим поля, настроим страницы и всё будет автоматически наполняться.

Инструкция как сделать автозаполнение документа Word из полей

Для примера возьму документ договора, где есть заказчик, исполнитель, дата документа и сумма договора, которые мы хотим подставлять из полей.

Пример документа с автозаполнением из полей делаю в microsoft office word 2019 (автоматизация заполнения документов word без эксель).

  1. Формат документа DOCM.
    Создаем новый документ и сохраняем его в формате docm (Документ Word с поддержкой макросов).
  2. Вкладка “Разработчик”.
    Файл – Параметры – Настроить ленту. В выпадающем списке выбираем “Основные команды”, затем выделяем ниже строчку “Разработчик”, и по середине жмем “Добавить”. Справа появляется “разработчик” с плюсиком, жмем Ок, и видим, что теперь вверху есть вкладка “Разработчик”.
    Вкладка "Разработчик". Файл - Параметры - Настроить ленту
  3. Делаем страницу с полями для ввода данных документа (договора).
    Кликаю в начале договора, жму вставка – разрыв страницы, и в итоге у меня пустая первая страница.
    На ней создаю табличку, это не обязательно, и начинаю там создавать поля. Делаем страницу с полями для ввода данных Делаем страницу с полями для ввода данных
  4. Создаём поля для ввода текста для автозаполнения документа.
    Кликаем в любое место документа, где нам нужно поле.
    Переходим во вкладку Разработчик. Вставляем не просто текстовое поле, а именно СТАРОЕ текстовое поле.
    То есть выбираем там уже иконку “Инструменты из предыдущих версий”, затем “Поле (элемент управления формы)”.
    И вставляем куда нам нужно.
    "Инструменты из предыдущих версий", затем "Поле (элемент управления формы)"
  5. Настраиваем поля Word для автозаполнения.
    Когда поле есть на странице, жмем по нему правой кнопкой и во всплывающем меню выбираем “Свойства” (поля).
    Настраиваем поля Word для автозаполнения
    Настраиваем обязательно следующие параметры поля:
    — Текст по-умолчанию: тут свой текст.
    — Закладка: на английском, уникальный идентификатор поля. Придумайте что-нибудь понятное, это нам пригодится далее.
    — Ставим галочки (чек-боксы) “разрешить изменения” и “вычислить при выходе”.
    В данном примере я создал текстовое поле, в котором будет Дата договора (по сути это любой текст). Мне главное, чтобы я в одном месте ввел данные, а в других местах документа текст из поля автоматически заполнился. И в данном случае это будет то, что я назвал датой.
  6. Настраиваем подстановку текста из поля в документ.
    ЕСТЬ ДВА СПОСОБА: ВРУЧНУЮ СОВСЕМ, И ЧЕРЕЗ СВОЙСТВА ПОЛЕЙ.
    Разберем первый способ: вставка текста из поля в документ через закладку ctrl+f9.
    Для этого выбираем место, где у нас должно подставиться значение поля. Мы помним, что в нашем случае уникальный идентификатор (название закладки) в примере: POLEDATE.
    В этом месте кликаем мышкой левой кнопкой (просто чтобы там курсор мигал), затем на клавиатуре нажимаем сочетание клавиш Ctrl+F9 (контрол плюс эф девять).
    Видим, что появились фигурные скобки с серым фоном, и мы можем внутри печатать.
    Настраиваем подстановку текста из поля в документ
    Печатаем внутри следующее: REF POLEDATE.
    Поясняю: внутри фигурных скобочек, должно быть три буквы заглавных REF, затем пробел, затем то как мы назвали закладку (идентификатор поля). В нашем случае это POLEDATE, а может быть что угодно.
    Больше ничего жать не нужно, можно убрать оттуда курсор.
    Вот как это выглядит в итоге:
    вставка текста из поля в документ через закладку ctrl+f9
    Второй способ: вставка значения поля из другого поля автоматически через закладку REF.
    Это практически тоже самое, только не нужно нажимать ничего на клавиатуре. По мне так, дольше, но вдруг вам там понятнее.
    Так же создаем поле, в этом примере возьму сумму договора. При создании поля (см. п. 5) я ввел название закладки поля (уникальный идентификатор) pole_stoimost.
    вставка значения поля из другого поля автоматически через закладку REF
    Только теперь, когда мы нажали в место документа, куда хотим подставить данные автоматически (курсор там мигает), мы вставляем поле.
    Выбираем вкладку “Вставка”, затем “Экспресс-блоки”, затем “Поле” (как на скриншоте ниже):
    "Вставка", затем "Экспресс-блоки", затем "Поле"
    Это поле нужно настроить так, чтобы в него подставлялось значение другого поля автоматически.
    При вставке поля из экспресс-блоков, или когда вы потом можете нажать правой кнопкой Свойства поля, настраиваем так.
    Слева выбираем тип поля “Ref”, и дальше выбираем название нашей закладки, т.е. идентификатор поля, откуда надо подставить текст. В нашем случае это pole_stoimost:
    Слева выбираем тип поля "Ref", и дальше выбираем название нашей закладки
    (вот кстати выше видно на скриншоте еще ошибку “Ошибка! Источник ссылки не найден.” – это происходит, когда вы ввели REF Несуществующая закладка, например. То есть не найдено поле (закладка) с тем идентификатором уникальным. И надо просто проверить свойства полей.).
    Короче, так или иначе, подытожу:
    — Создали поле через Разработчика.
    — У него в свойствах прописали уникальный идентификатор (название закладки).
    — Вставили через CTRL+F9 или экспресс блоки – поле (место) куда будет подстваляться текст из первого поля, указав такой же идентификатор.
  7. Автозаполнения документа значением из полей через F9 или печать документа.
    Ну.. тут уже все понятно должно быть – насоздавали полей сколько нужно, поставляли в места куда нужно.
    По-умолчанию, Word будет автозаполнять документ автоматически, если весь документ выделить (ctrl+a например) и нажать кнопку F9.
    Места с REF и полями преобразуются в то, что есть в оригинальном поле-закладке.
    Но есть трудность – сложно объяснить людям как это работает, что выделять и как обновлять эти поля.
    Я выбрал способ попроще – чтобы поля автоматически обновлялись при печати (печатать почти все умеют как).
    Лезем в настройки (файл – параметры), там выбираем “Экран” и отмечаем галочку “Обновлять поля перед печатью”.
    чтобы поля автоматически обновлялись при печати
    Теперь, каждый раз когда через Файл – Печать или Ctrl+P будет печататься документ – поля будут обновляться (текст автоматически подставляться), т.е. тоже самое что через выделение документа и нажатие F9.
  8. Наводим красоту: запрет редактирования, номера страниц.
    Ну и еще два момента. Во-первых, документы пронумерованы обычно. И основная проблема – что страница с полями тоже печатается, а в официальном документе её быть не должно.
    Соответственно, способа убрать страницу word из печати автоматически я не нашел. Поэтому, выкрутился по-другому.
    Через настройки колонтитула (несколько кликов по нижней части документа (или где там у вас номера страниц)), переходим в свойства, номера страниц, и там выбираем начать с “0″, с нуля короче.
    номера страниц, и там выбираем начать с "0", с нуля короче
    Таким образом, страница с полями становится как бы нулевой, и договор печатается как надо, первая страница договора остается первой.
    И второе, защита от редактирования, чтобы только вводили данные в поля.
    защита от редактирования, чтобы только вводили данные в поля
    Сделал просто – Рецензирование – Ограничить редактирование – Да, включить защиту, ну и пароль 1.
    Отключается так же, только не все видят – там внизу кнопка становится “отключить защиту”.

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

пример автоматическое заполнение Word из полей

Скачать пример автоматическое заполнение Word из полей: Автозаполнение документов Word Без Excel через текстовые поля docm (пароль на отключение защиты: 1 (просто единичка)).

P.S. Почему формат docm? На самом деле потому, что если формат doc или docx – то не работает вкладка “разработчик” где поля (ну не вставляются они). При этом – само автозаполнение прекрасно работает. Совет – делайте всё в docm, а итоговый результат, уже с защитой от редактирования – сохраните в обычный формат doc/docx и отдавайте, всё там прекрасно работает и печатается.

P.P.S. Заказать можно тут: https://vk.com/autoworddocs! обязательно оставьте отзыв!

 

Мои контакты →

© 2006 — 2023, Александр Сергеев

Цель процесса автоматического создания документов

Автоматическое создание документа — базовая единица оптимизации ресурсных затрат Вашей организации. Деятельность любой компании неразрывно связана с документооборотом, будь то управление персоналом — кадровая служба (заявления на отпуск, увольнение, больничный), бухгалтерия, либо же просто формирование определенного пакета документов по той или иной активности компании. Зачастую, сам процесс подготовки документов сводится к монотонным действиям по расстановке конкретных значений по заранее отведенным позициям в шаблоне. Слабыми сторонами данного подхода являются: низкая скорость подготовки документации и высокая степень возникновения ошибки ввиду человеческого фактора. При росте объема документации вероятность ошибки только возрастает, например, Вам нужно подготовить доп соглашения для всего штата сотрудников. Основные задачи программы автоматического создания документов Word на основе шаблонов — свести к минимуму вероятность возникновения ошибок ввода, значительно увеличить скорости самого процесса. Все действия сводятся к выбору записи или записей данных о сотруднике/клиенте/заказе/поставщике из исходной таблицы и указанию шаблона подготавливаемого документа.

Ссылки для скачивания:

— Скачать макрос автоматического создания документов Word по шаблону (архив 208КБ)

Автоматическое создание документа

Как начать работу с автоматическим формированием документов Word:

1. Разархивируйте скачанный архив с файлом с помощью программы 7zip или WinRar.

2. При появлении сообщения о доверенном источнике: закройте программу, кликните правой кнопкой мыши на файле — «Свойства», далее установите галочку напротив «Разблокировать».
сообщение безопасности платежного календаряразблокировать платежный календарь

3. Если в Вашем Excel запуск макросов по умолчанию отключен, в данном окне необходимо нажать «Включить содержимое».включить содержимое

4. Для полноценной работы с файлом необходимо нажать «Разрешить редактирование» при появлении данного сообщения.разрешить редактирование

Автоматическое создание документа — этап 1. Настройка программы

Все действия по настройке макроса и сам процесс построения документов происходят на листе «Настройки», который условно можно разделить на две области: таблица исходных данных и панель кнопочного управления.

Таблица исходных данных состоит из строки меток (условных обозначений каждого столбца) — строка №3, заголовка с названиями столбцов — строка №4 и построчных записей — начиная с 5й строки. Количество колонок, их названия и условные обозначения можно свободно редактировать, соблюдая простые правила:

  • Если Вы добавляете новую колонку, у нее должно быть название и условное обозначение.
  • Для склонения ФИО сотрудника в Родительный или Дательный падежи используйте встроенные функции =RODP() и =DATP() соответственно.
  • Не допускайте наличия пустых колонок (без названий и обозначений) между колонками данных.
  • Не удаляйте колонку «ФИО сотрудника», т.к. она является ключевой для работы программы. Вы можете ее переименовать — заказчик, ответственный, клиент, менеджер и т.д. на свое усмотрение. Она используется в процессе сохранения итогового word документа, как часть имени, например: Иванов А.В. Заявление на отпуск, Петров В.К. Накладная на отгрузку.

Автоматическое создание документа по шаблону

Также Вы можете разбивать записи таблицы (строки) на группы. Например Вы хотите завести сотрудников по отделам или заказчиков по направлениям деятельности, или городам расположения и т.д..

Панель кнопочного управления автоматизированного создания документов состоит из следующих элементов интерфейса:

  • Добавить запись — вставляет новую строку в заранее выбранную вами ячейку. Также можно добавлять записи вручную с помощью стандартной вставки строки excel;
  • Добавить группу — вставляет новую серую строку группы в заранее выбранную вами ячейку;
  • Удалить элемент — удаляет любую выбранную строку таблицы данных;
  • Очистить таблицу — полностью стирает данные из таблицы. Можно использовать для очистки листа от тестовых данных;
  • Создать документ — выбор шаблона word для построения документа. Перед этим в таблицы должны быть выбраны записи данных, по которым необходимо произвести построение.

Перед запуском процедуры автоматизированного создания документов убедитесь, что указаны верные пути к word шаблонам и папке сохранения результатов построения!

Автоматическое создание документа — этап 2. Шаблоны Word

автоматизированный шаблон Word

Процесс подготовки word шаблонов для автоматического построения документов включает в себя рад несложных действий. Создайте общую папку для всех шаблонов, в ней создайте папки категорий, чтобы разделить шаблоны по областям применения (названия категорий укажите на свое усмотрение). В каждой подпапке определенной категории расположите непосредственно документы word с расставленными метками. Метки расположены в 3й строке таблицы над каждый ее столбцом. Поставьте метки в те места шаблона, в которые вы хотите прокачать данные из определенного столбца. Например, там где должно быть фио сотрудника укажите [fio].

Порядок действий запуска автоматического создания документов

Когда таблица данных заполнена, а метки в шаблонах расставлены по своим местам пора приступать к самой интересной части — автоматизированному формированию документов word.

В первую очередь, выделите строку или диапазон данных таблицы, по которым хотите сформировать документы:

Автоматическое создание документа Word

Шаг номер два — нажмите кнопку «Создать документ». Перед Вами появится диалоговое окно, в котором нужно выбрать подпапку — категорию документа и один, либо несколько шаблонов построения. Далее кликните по кнопке «Сформировать документы».

окно выбора шаблон Word

Мои поздравления! Документы успешно сформированы и лежат по указанному Вами пути для сохранения!

Заказать разработку программ или доработку любого проекта

Благодарю Вас за прочтение данной статьи. Надеюсь, что материал подан понятно и я смог ответить на большую часть Ваших вопросов по поводу автоматизации создания документов. Но, как говорится, лучше один раз попробовать, чем сто раз прочитать. Скачивайте программу по ссылке вверху или внизу статьи, в архиве также идет набор тестовых данных, которые содержат как шаблоны, так и заполненную таблицу самого макроса. Просто разархивируйте файлы в любое доступное место и начинайте работу.

Всегда рад ответить на Ваши вопросы, готов подготовить оптимальные решения обработки данных для Вашего бизнеса, автоматизировать рутинные процессы, связаться со мной можно через WatsApp 89507094770, сайт excellab.ru или написать на почту: goryaninov@bk.ru, профиль вк:

Ссылки для скачивания:

— Скачать макрос автоматического создания документов Word по шаблону (архив 208КБ)

Здесь можно ознакомиться с другими программами автоматизации, которые представлены на моем сайте:

— Дневной табель учета рабочего времени в excel
— Почасовой табель учета рабочего времени в excel
— Табель учета рабочего времени в днях по форме Т-13
— Табель расчет и планирование вахты
— Табель учета рабочего времени с учетом ночных смен
— Платежный календарь в excel

Версию Microsoft Visual C# для .NET этой статьи см. в разделе 316384.
 

Сведения о версии этой статьи Microsoft Visual Basic 6.0 см. в разделе 313193.
 

Аннотация

В этой пошаговой статье описывается создание нового документа в Word с помощью службы автоматизации из Visual Basic .NET.

Пример кода

В примере кода в этой статье показано, как сделать следующее:

  • Вставка абзацев с текстом и форматированием.

  • Просмотр и изменение различных диапазонов в документе.

  • Вставка таблиц, форматирование таблиц и заполнение таблиц данными.

  • Добавление диаграммы.

Чтобы создать документ Word с помощью службы автоматизации из Visual Basic .NET, выполните следующие действия.

  1. Запустите Microsoft Visual Studio .NET. В меню Файл выберите пункт Создать, а затем — Проект. В разделе Типы проектов выберите Проекты Visual Basic, а затем — Приложение Windows в разделе Шаблоны. Форма Form1 создается по умолчанию.

  2. Добавьте ссылку на библиотеку объектов Microsoft Word. Для этого выполните следующие действия:

    1. В меню Проект щелкните Добавить ссылку.

    2. На вкладке COM найдите библиотеку объектов Microsoft Word и нажмите кнопку Выбрать.

      Обратите внимание, что Microsoft Office 2003 и более поздние версии Office включают основные сборки взаимодействия (PIA). Microsoft Office XP не включает piA, но их можно скачать.

    3. Нажмите кнопку ОК в диалоговом окне Добавление ссылок, чтобы принять выбранные значения. Если появится запрос на создание оболочек для выбранных библиотек, нажмите кнопку Да.

  3. В меню Вид выберите Панель элементов, чтобы отобразить панель элементов, а затем добавьте кнопку в Form1.

  4. Дважды щелкните Button1. Откроется окно кода для формы.

  5. В окне кода замените приведенный ниже код.

        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    
        End Sub

    С:

        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim oWord As Word.Application
            Dim oDoc As Word.Document
            Dim oTable As Word.Table
            Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph
            Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph
            Dim oRng As Word.Range
            Dim oShape As Word.InlineShape
            Dim oChart As Object
            Dim Pos As Double
    
            'Start Word and open the document template.
            oWord = CreateObject("Word.Application")
            oWord.Visible = True
            oDoc = oWord.Documents.Add
    
            'Insert a paragraph at the beginning of the document.
            oPara1 = oDoc.Content.Paragraphs.Add
            oPara1.Range.Text = "Heading 1"
            oPara1.Range.Font.Bold = True
            oPara1.Format.SpaceAfter = 24    '24 pt spacing after paragraph.
            oPara1.Range.InsertParagraphAfter()
    
            'Insert a paragraph at the end of the document.
            '** endofdoc is a predefined bookmark.
            oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("endofdoc").Range)
            oPara2.Range.Text = "Heading 2"
            oPara2.Format.SpaceAfter = 6
            oPara2.Range.InsertParagraphAfter()
    
            'Insert another paragraph.
            oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("endofdoc").Range)
            oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"
            oPara3.Range.Font.Bold = False
            oPara3.Format.SpaceAfter = 24
            oPara3.Range.InsertParagraphAfter()
    
            'Insert a 3 x 5 table, fill it with data, and make the first row
            'bold and italic.
            Dim r As Integer, c As Integer
            oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("endofdoc").Range, 3, 5)
            oTable.Range.ParagraphFormat.SpaceAfter = 6
            For r = 1 To 3
                For c = 1 To 5
                    oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
                Next
            Next
            oTable.Rows.Item(1).Range.Font.Bold = True
            oTable.Rows.Item(1).Range.Font.Italic = True
    
            'Add some text after the table.
            'oTable.Range.InsertParagraphAfter()
            oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("endofdoc").Range)
            oPara4.Range.InsertParagraphBefore()
            oPara4.Range.Text = "And here's another table:"
            oPara4.Format.SpaceAfter = 24
            oPara4.Range.InsertParagraphAfter()
    
            'Insert a 5 x 2 table, fill it with data, and change the column widths.
            oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("endofdoc").Range, 5, 2)
            oTable.Range.ParagraphFormat.SpaceAfter = 6
            For r = 1 To 5
                For c = 1 To 2
                    oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
                Next
            Next
            oTable.Columns.Item(1).Width = oWord.InchesToPoints(2)   'Change width of columns 1 & 2
            oTable.Columns.Item(2).Width = oWord.InchesToPoints(3)
    
            'Keep inserting text. When you get to 7 inches from top of the
            'document, insert a hard page break.
            Pos = oWord.InchesToPoints(7)
            oDoc.Bookmarks.Item("endofdoc").Range.InsertParagraphAfter()
            Do
                oRng = oDoc.Bookmarks.Item("endofdoc").Range
                oRng.ParagraphFormat.SpaceAfter = 6
                oRng.InsertAfter("A line of text")
                oRng.InsertParagraphAfter()
            Loop While Pos >= oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage)
            oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
            oRng.InsertBreak(Word.WdBreakType.wdPageBreak)
            oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
            oRng.InsertAfter("We're now on page 2. Here's my chart:")
            oRng.InsertParagraphAfter()
    
            'Insert a chart and change the chart.
            oShape = oDoc.Bookmarks.Item("endofdoc").Range.InlineShapes.AddOLEObject( _
                ClassType:="MSGraph.Chart.8", FileName _
                :="", LinkToFile:=False, DisplayAsIcon:=False)
            oChart = oShape.OLEFormat.Object
            oChart.charttype = 4 'xlLine = 4
            oChart.Application.Update()
            oChart.Application.Quit()
            'If desired, you can proceed from here using the Microsoft Graph 
            'Object model on the oChart object to make additional changes to the
            'chart.
            oShape.Width = oWord.InchesToPoints(6.25)
            oShape.Height = oWord.InchesToPoints(3.57)
    
            'Add text after the chart.
            oRng = oDoc.Bookmarks.Item("endofdoc").Range
            oRng.InsertParagraphAfter()
            oRng.InsertAfter("THE END.")
    
            'All done. Close this form.
            Me.Close()
    
        End Sub

  6. Добавьте следующий код в начало Form1.vb:

    Imports Word = Microsoft.Office.Interop.Word

  7. Нажмите клавишу F5, чтобы выполнить сборку и запуск программы.

После завершения кода изучите документ, созданный для вас. Документ содержит две страницы отформатированных абзацев, таблиц и диаграммы.

Использование шаблона

Если вы используете службу автоматизации для создания документов в общем формате, вы можете начать процесс с нового документа, основанного на предварительно отформатованном шаблоне. Использование шаблона с клиентом службы автоматизации Word имеет два существенных преимущества по сравнению с созданием документа из ничего:

  • Вы можете иметь больший контроль над форматированием и размещением объектов в документах.

  • Вы можете создавать документы с меньшим количеством кода.

С помощью шаблона можно точно настроить размещение таблиц, абзацев и других объектов в документе, а также включить форматирование этих объектов. С помощью службы автоматизации можно создать новый документ на основе шаблона с таким кодом:

oWord.Documents.Add "<Path to your template>MyTemplate.dot"

В шаблоне можно определить закладки, чтобы клиент службы автоматизации смог заполнить текст переменной в определенном расположении в документе следующим образом:

oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"

Еще одно преимущество использования шаблона заключается в том, что вы можете создавать и хранить стили форматирования, которые необходимо применять во время выполнения, следующим образом:

oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"

-или-

oWord.Selection.Style = "MyStyle"

Ссылки

Чтобы получить дополнительные сведения об использовании Visual Basic .NET для автоматизации Microsoft Word, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

301656 Автоматизация Word для выполнения слияния из Visual Basic .NET

Нужна дополнительная помощь?

Время на прочтение
3 мин

Количество просмотров 15K

Значительная часть текстовых документов сегодня создаётся и редактируется в программе Microsoft Word. Наличие этой программы практически на каждом компьютере даёт возможность автоматизировать печать, обработку и экспорт текстовых документов в PDF, используя API Microsoft Word.

В этой статье я расскажу, как автоматизировать печать текстовых документов и конвертирование документов в формат PDF.

Пример исходного кода для печати текстового документа, написанный на языке Microsoft Visual Basic.NET, выглядит так:

Dim app = CreateObject("Word.Application")
Dim doc = app.Documents.Open("D:inmy resume.doc")
app.PrintOut(False)
doc.Close()
app.Quit()

Этот код выглядит очень просто. Но для автоматизации печати списка документов следует учесть ряд нюансов:

1. Людям нужна возможность задавать имя используемого принтера
2. Нужно заставить программу Word работать в невидимом режиме, а не появляться на экране при обработке каждого документа
3. Нужно отключить все информационные сообщения и запросы на подтверждение операций с документами
4. Нужно отключить добавление обработанных в автоматическом режиме файлов в список «Recent files».

Доработанный вариант нашей программы будет выглядеть так:

Dim app = CreateObject("Word.Application")

app.Visible = False

app.DisplayAlerts = 0
app.FeatureInstall = 0
app.DisplayRecentFiles = False
app.DisplayDocumentInformationPanel = False
app.AutomationSecurity = 3

Dim wdOptions = app.Options
wdOptions.WarnBeforeSavingPrintingSendingMarkup = False
wdOptions.SavePropertiesPrompt = False
wdOptions.DoNotPromptForConvert = True
wdOptions.PromptUpdateStyle = False
wdOptions.ConfirmConversions = False

Dim doc = app.Documents.Open("D:inmy resume.doc")

doc.Application.ActivePrinter = "Xerox Global Print Driver PS"

app.PrintOut(False)

doc.Saved = True
doc.Close(0)
app.Quit()

Я считаю, что этого кода вполне достаточно, что бы сдать зачёт по программированию в университете. Но до внедрения его в коммерческое приложение следует решить еще несколько вопросов.

1. Этот код не будет работать, если входной файл имеет атрибут «Read only».
2. Производительность вашей программы можно увеличить в несколько раз, если открывать и закрывать только документы, а приложение Microsoft Word оставлять открытым.
3. Многим пользователям нужна возможность печати только заданного диапазона страниц, а не всего документа целиком, а так же возможность напечатать несколько копий документа.
4. Этот код не будет работать, если ваша программа запущена из Windows Tasks Scheduler или от имени Windows Service.

В этой статье я не стану рассказывать о том, как решить эти четыре задачи, что бы не делать жизнь моих читателей слишком скучной. Скажу лишь, что в программах Print Conductor, FolderMill и 2Printer они были мной успешно решены.

Для конвертирования документа в PDF нужно заменить функцию PrintOut на ExportAsFixedFormat. После этого наш код будет выглядеть так:

Dim app = CreateObject("Word.Application")

app.Visible = False

app.DisplayAlerts = 0
app.FeatureInstall = 0
app.DisplayRecentFiles = False
app.DisplayDocumentInformationPanel = False
app.AutomationSecurity = 3

Dim wdOptions = app.Options
wdOptions.WarnBeforeSavingPrintingSendingMarkup = False
wdOptions.SavePropertiesPrompt = False
wdOptions.DoNotPromptForConvert = True
wdOptions.PromptUpdateStyle = False
wdOptions.ConfirmConversions = False

Dim doc = app.Documents.Open("D:inmy resume.doc")

doc.ExportAsFixedFormat("D:outmy resume.pdf", 17)

doc.Saved = True
doc.Close(0)
app.Quit()

Этот пример будет работать, если на вашем компьютере Microsoft Word 2007 SP2 или его более новая версия.

Функция ExportAsFixedFormat не будет работать, если на компьютере не установлено ни одного принтера. Либо если один из установленных принтеров не назначен в качестве system default printer.

Код экспорта документов в PDF можно улучшить, реализовав возможность экспорта части страниц документа, а так же возможность экспорта документов в PDF/A. Обе эти возможности компания Microsoft реализовала в функции ExportAsFixedFormat.

Примеры коммерческих приложений, использующих этот код для конвертирования документов в PDF: DocuFreezer и FolderMill.

Часть 1. Microsoft Word и Microsoft Excel

Коротко об автоматизации

VBA и средства разработки контроллеров автоматизации

Объектные модели Microsoft Office

Общие принципы создания контроллеров автоматизации

Автоматизация Microsoft Word

   Программные идентификаторы и объектная модель Microsoft Word

   Создание и открытие документов Microsoft Word

   Сохранение, печать и закрытие документов Microsoft Word

   Вставка текста и объектовв документ и форматирование текста

   Перемещение курсора по тексту

   Создание таблиц

   Обращение к свойствам документа

Автоматизация Microsoft Excel

   Программные идентификаторы и объектная модель Microsoft Excel

   Запуск Microsoft Excel, создание и открытие рабочих книг

   Сохранение, печать и закрытие рабочих книг Microsoft Excel

   Обращение к листам и ячейкам

   Создание
диаграмм

Настоящая статья посвящена теме, может быть, и не новой,
но, как показывают письма читателей, по-прежнему актуальной — автоматизации
приложений Microsoft Office. Многие разработчики в процессе работы над своими
проектами (неважно, с помощью какого средства разработки — Delphi, C++Builder,
Visual Basic…) нередко применяют сервисы, предоставляемые Microsoft Office,
например построение сводных таблиц и диаграмм с помощью Microsoft Excel, генерацию
и печать документов с помощью Microsoft Word и т.д. Нередко пользователи, привыкшие
использовать приложения Microsoft Office в повседневной работе, сами настаивают
на применении в приложениях таких сервисов либо просто на сохранении отчетов
и других документов в одном из форматов Microsoft Office. Отметим, что потенциальные пожелания подобного рода
компанией Microsoft учтены достаточно давно — практически все, что в состоянии
сделать пользователь любого приложения Microsoft Office с помощью меню, клавиатуры
и инструментальной панели, может быть произведено и автоматически, то есть либо
из VBA-программы, либо из приложения, созданного с помощью одного из средств
разработки. Иными словами, приложения Microsoft Office являются программируемыми.
Программируемость в общем случае означает возможность
управления данным приложением с помощью макроязыков либо с помощью других приложений.
Все компоненты Microsoft Office поддерживают один и тот же макроязык: Visual
Basic for Applications (VBA), позволяющий создавать приложения непосредственно
внутри документов Office (это называется «решения на базе Microsoft Office»).
Управление же компонентами Office из других приложений осуществляется с помощью
автоматизации (Automation, ранее — OLE Automation) — все приложения
Microsoft Office являются серверами автоматизации (или COM-серверами).
Для создания таких приложений пригодны любые средства
разработки, позволяющие создавать контроллеры автоматизации (COM-клиенты).
Наиболее часто для этой цели используется Visual Basic,
но это могут быть и Delphi, и C++Builder, и Visual C++. Однако прежде чем обсуждать
возможности тех или иных средств разработки, следует разобраться, что такое
автоматизация.

Коротко об автоматизации

Автоматизация — это одна из возможностей, предоставляемых технологией
Microsoft COM (Component Object Model). Не вдаваясь в подробности реализации
этой технологии, заметим, что она используется приложениями (называемыми COM-серверами)
для предоставления доступа к их объектам, а также к свойствам и методам этих
объектов другим приложениям (называемым COM-клиентами), каковыми могут быть
и средства разработки. Например, текстовый процессор, будучи COM-сервером, может
предоставлять другим приложениям доступ к документу, абзацу, закладке с помощью
соответствующих объектов. Для именования (и опознания) COM-серверов обычно используются
специальные строковые обозначения — программные идентификаторы (Programmatic
Identifier, ProgID). Они нужны для того, чтобы операционная система могла с
помощью этих идентификаторов определить, в каком именно каталоге (или на каком
компьютере локальной сети, если используется тот или иной способ удаленного
доступа к серверу) расположен исполняемый файл сервера автоматизации, и запустить
его на выполнение. О том, какие именно программные идентификаторы применяются
для того или иного приложения Microsoft Office, будет сказано в разделах, посвященных
этим приложениям.

Объекты автоматизации с точки зрения программирования мало чем отличаются от
обычных объектов, знакомых нам из теории и практики объектно-ориентированного
программирования. Как и обычные объекты, они обладают свойствами и методами.
Свойство — это характеристика объекта; например, свойством абзаца (объект
Paragraph) может быть его стиль (Style). Методом называется действие, которое
можно выполнить с объектом (например, можно сохранить документ с помощью метода
SaveAs объекта Document).

Нередко серверы автоматизации содержат наборы однотипных объектов, называемых
коллекциями. Например, текстовый процессор может содержать коллекцию документов,
а каждый документ — коллекцию абзацев.

Как узнать, какие объекты доступны в серверах автоматизации? Для этой цели
в комплект поставки любого сервера автоматизации входит документация и файлы
справки, описывающие их объектную модель. Если брать приложения Microsoft Office
2000, то это справочные файлы для программистов на Visual Basic for Applications
VBAxxx9.CHM (для Microsoft Office 97 — VBxxx8.HLP соответственно). Отметим,
что по умолчанию они не устанавливаются, так как нужны разработчикам, а не рядовым
пользователям.

Вся информация об объектах, необходимая контроллерам автоматизации, содержится
в библиотеках типов. Библиотеки типов хранятся в специальном бинарном формате
и обычно представлены в виде файлов с расширениями *.olb или *.tlb, а также
могут содержаться внутри исполняемых файлов (*.exe) или динамически загружаемых
библиотек (*.dll). Библиотеки типов можно просматривать с помощью утилиты OleView,
входящей в состав Microsoft Platform SDK, а средства разработки фирмы Borland
содержат свои собственные утилиты просмотра библиотек типов.

Заканчивая это более чем краткое введение в автоматизацию, остановимся также
на понятии связывания. Связыванием называется способ, с помощью которого переменная
или класс приложения-контроллера ссылается на объект автоматизации. Таких способов
существуют два: позднее связывание и раннее связывание.

Позднее связывание означает, что реальная ссылка на объект в переменной или
классе появляется на этапе выполнения приложения-контроллера. Этот способ обычно
более медленный, чем ранее связывание, но он доступен во всех средствах разработки,
позволяющих создавать контроллеры автоматизации, и менее чувствителен к тому,
все ли параметры методов перечислены при их вызовах в коде приложения-контроллера.
При позднем связывании корректность вызовов методов проверяется в момент их
осуществления, то есть на этапе выполнения приложения, а не на этапе его компиляции.

Раннее связывание означает, что реальная ссылка на объект автоматизации появляется
уже на этапе компиляции. Поэтому в коде приложения-контроллера требуется ссылка
на библиотеку типов (или на специальный модуль, являющийся интерфейсом к ней),
и это приводит к генерации в этом приложении классов с теми же свойствами и
методами, что и у объектов автоматизации, что делает возможными синтаксическую
проверку имен методов на этапе компиляции и доступ к именованным константам,
содержащимся в библиотеке типов. Отметим, однако, что далеко не все средства
разработки, поддерживающие позднее связывание, осуществляют также поддержку
раннего связывания.

Закончив экскурс в COM и автоматизацию, вернемся к вопросу о том, какие средства
разработки удобно применять для создания контроллеров автоматизации.

в начало

в начало

VBA и средства разработки контроллеров автоматизации

Как уже было сказано выше, контроллеры автоматизации можно создавать с помощью
различных средств разработки, и если вы уже используете какое-либо из инструментальных
средств, поддерживающих создание контролеров автоматизации, можно именно им
и воспользоваться. Единственное, что следует сделать — это узнать, поддерживается
ли вашим средством разработки ранее связывание, если вы планируете его использовать.
Примеры простейших контроллеров автоматизации (как правило, для Microsoft Word
или Microsoft Excel), дающие представление о том, как вызываются методы сервера,
обычно можно найти в комплекте поставки большинства современных средств разработки.

Освоение объектной модели автоматизируемого сервера можно начать с записи необходимой
последовательности действий в виде макроса с помощью VBА. Создать макрос можно,
выбрав из меню приложения Microsoft Office пункт Tools | Macro |Record New Macro.
Просмотр полученного макроса в редакторе кода VBA обычно позволяет понять, как
должен выглядеть код, реализующий эту последовательность действий.

Обсудив возможные средства разработки контроллеров автоматизации, можно наконец
перейти к самим приложениям Microsoft Office, к их объектным моделям и к их
использованию. В качестве средства разработки для приведенных ниже примеров
используется Borland Delphi 5, но поскольку в них приводится последовательность
вызова свойств и методов объектов Microsoft Office, перенос кода на другие языки
программирования не должен вызвать особых затруднений. Если специально не оговорено,
в данной статье во всех примерах используется раннее связывание.

в начало

в начало

Объектные модели Microsoft Office

Как было сказано выше, приложения Microsoft Office предоставляют контроллерам
автоматизации доступ к своей функциональности с помощью своей объектной модели,
представляющей собой иерархию объектов. Объекты могут предоставлять доступ к
другим объектам посредством коллекций.

В качестве иллюстрации того, как выглядит иерархия объектов Microsoft Office,
приведем небольшой фрагмент объектной модели Microsoft Word (рис.1):

В объектных моделях всех приложений Microsoft Office
всегда имеется самый главный объект, доступный приложению-контроллеру и представляющий
само автоматизируемое приложение. Для всех приложений Microsoft Office он называется
Application, и многие его свойства и методы для всех этих приложений также одинаковы.
Наиболее часто мы будем использовать следующие из них:

  1. Свойство Visible (доступное для объекта Application всех приложений Microsoft
    Office) позволяет приложению появиться на экране и в панели задач; оно принимает
    значения True (пользовательский интерфейс приложения доступен) или False (пользовательский
    интерфейс приложения недоступен; это значение устанавливается по умолчанию).
    Если вам нужно сделать что-то с документом Office в фоновом режиме, не информируя
    об этом пользователя, можно не обращаться к этому свойству — в этом случае
    приложение можно будет найти только в списке процессов с помощью приложения
    Task Manager.
  2. Метод Quit закрывает приложение Office. В зависимости от того, какое приложение
    Office автоматизируется, он может иметь параметры или не иметь таковых.
в начало

в начало

Общие принципы создания контроллеров автоматизации

В общем случае контроллер автоматизации должен выполнять следующие действия:

  1. Проверить, запущена ли копия приложения-сервера.
  2. В зависимости от результатов проверки запустить копию автоматизируемого
    приложения Office либо подключиться к уже имеющейся копии.
  3. Сделать окно приложения-сервера видимым (в общем случае это не обязательно).
  4. Выполнить какие-то действия с приложением-сервером (например, создать или
    открыть документы, изменить их данные, сохранить документы и пр.)
  5. Закрыть приложение-сервер, если его копия была запущена данным контроллером,
    или отключиться от него, если контроллер подключился к уже имеющейся копии.

Соответствующий код для Delphi представлен в листинге 1.

Здесь мы воспользовались функциями GetActiveOleObject и CreateOleObject для
подключения к уже запущенной копии приложения-сервера или запуска новой, если
сервер не запущен, что приводит к тому, что в вариантную переменную помещается
ссылка на объект Application соответствующего сервера.

Приведенная часть кода контроллера в других средствах разработки может выглядеть
по-другому — она не имеет прямого отношения к методам объектов Office,
так как обусловлена правилами вызова стандартных функций OLE в Delphi (за исключением
вызовов методов Visible и Quit объекта Application). А вот все то, что должно
быть вставлено вместо комментария «Здесь выполняются другие действия с объектами
приложения Office», в разных средствах разработки должно выглядеть более или
менее однотипно — используя созданную вариантную переменную, мы манипулируем
методами и свойствами объекта Application.

В заключение сделаем одно маленькое замечание касательно числа параметров методов
объектов автоматизации. В случае применения позднего связывания число указанных
в коде параметров метода не обязано совпадать с их истинным числом (которое
можно найти в описании объектной модели соответствующего приложения). В этом
случае вполне допустимым является следующий код:

App.Quit;

несмотря на то что метод Quit объекта Application в случае некоторых приложений
Microsoft Office (например, Microsoft Word) имеет параметры.

При использовании же раннего связывания, например при создании контроллеров
с помощью Delphi, следует более строго подходить к определению параметров —
их число и тип должны соответствовать описанию методов в библиотеке типов. Например,
в случае раннего связывания корректный код на Delphi для закрытия документа
Word со значениями всех параметров по умолчанию будет иметь вид:

App.Quit(EmptyParam, EmptyParam, EmptyParam);

Исключением из этого правила является Visual Basic — это средство разработки
позволяет не задумываться о числе параметров методов при написании кода.

Обсудив общие принципы создания контроллеров автоматизации и узнав, как это
делается средствами Borland Delphi, мы можем перейти к рассмотрению автоматизации
конкретных приложений Microsoft Office. Начнем с одного из самого популярных
компонентов этого пакета — с Microsoft Word.

в начало

в начало

Автоматизация Microsoft Word

В данном разделе мы обсудим наиболее часто встречающиеся задачи, связанные
с автоматизацией Microsoft Word. Но перед этим рассмотрим, каковы программные
идентификаторы основных объектов Microsoft Word и что представляет собой его
объектная модель.

в начало

в начало

Программные идентификаторы и объектная модель Microsoft Word

Для приложения-контроллера доступны непосредственно следующие объекты:

Объект

Программный идентификатор

Комментарий

Application

Word.Application, Word.Application.9

С помощью этого программного идентификатора создается экземпляр Word
без открытых документов

Document

Word.Document, Word.Document.9, Word.Template.8

С помощью этого программного идентификатора создается экземпляр Word
с одним вновь созданным документом

Все остальные объекты Word являются так называемыми внутренними объектами.
Это означает, что они не могут быть созданы сами по себе; так, объект Paragraph
(абзац) не может быть создан отдельно от содержащего его документа.

Если вспомнить, что основное назначение Word — работа с документами, можно
легко понять иерархию его объектной модели (фрагмент ее был показан на рис.
1). Основным объектом в ней, как иво всех других приложениях Microsoft Office,
является объект Application, содержащий коллекцию Documents объектов типа Document.
Каждый объект типа Document содержит коллекцию Paragraphs объектов типа Paragraph,
Bookmarks типа Bookmark, Characters типа Character и т.д. Манипуляция документами,
абзацами, символами, закладками реально осуществляется путем обращения к свойствам
и методам этих объектов.

Ниже мы рассмотрим наиболее часто встречающиеся задачи, связанные с автоматизацией
Microsoft Word. Если же вам встретилась задача, не совпадающая ни с одной из
перечисленных, вы можете попытаться найти подходящий пример на Visual Basic
в справочном файле VBAWRD9.CHM, либо, как уже было сказано выше, записать необходимую
последовательность действий в виде макроса и проанализировать его код.

в начало

в начало

Создание и открытие документов Microsoft Word

Для создания примеров использования Microsoft Word можно использовать код создания
контроллера, приведенный выше, и модифицировать его, заменяя комментарии кодом,
манипулирующим свойствами и методами объекта Word.Application. Мы начнем с создания
и открытия документов.

Создать новый документ Word можно, используя метод Add коллекции Documents
объекта Application:

App.Documents.Add;

Как создать нестандартный документ? Очень просто — нужно указать имя шаблона
в качестве параметра метода Add:

App.Documents.Add(‘C:Program Files _
   Microsoft OfficeTemplates1033Manual.dot’);

Для открытия уже существующего документа следует воспользоваться методом Open
коллекции Documents:

App.Documents.Open(‘C:MyWordFile.doc’);

Отметим, что свойство ActiveDocument объекта Word.Application указывает на
текущий активный документ среди одного или нескольких открытых. Помимо этого
к документу можно обращаться по его порядковому номеру с помощью метода Item;
например ко второму открытому документу можно обратиться так:

App.Documents.Item(2)

Отметим, что нумерация членов коллекций в Microsoft Office начинается с единицы.

Сделать документ активным можно с помощью метода Activate:

App.Documents.Item(1).Activate;

Следующее, чему следует научиться — это сохранять документ Word и закрывать
сам Word.

в начало

в начало

Сохранение, печать и закрытие документов Microsoft Word

Закрытие документа может быть осуществлено с помощью метода Close:

App.Documents.Item(2).Close;

или

App.ActiveDocument.Close ;

Метод Close имеет несколько необязательных (в случае позднего связывания) параметра,
влияющих на правила сохранения документа. Первый из них влияет на то, сохраняются
ли внесенные в документ изменения, и принимает три возможных значения (соответствующие
константы рекомендуется описать в приложении. См. листинг
2):

Третий параметр принимает значения True или False и влияет на то, пересылать
ли документ следующему пользователю по электронной почте. Если эта функциональность
не применяется, можно проигнорировать этот параметр.

Таким образом, при использовании этих параметров закрыть документ можно, например,
так:

App.ActiveDocument.Close(wdSaveChanges, _
   wdPromptUser) ;

Просто сохранить документ, не закрывая его, можно с помощью метода Save:

App.ActiveDocument.Save;

Этот метод также имеет несколько необязательных (в случае позднего связывания)
параметров, первый из которых равен True, если документ сохраняется автоматически,
и False, если нужно выводить диалоговую панель для получения подтверждения пользователя
о сохранении изменений (если таковые были сделаны). Второй параметр влияет на
формат сохраняемого документа, и список его возможных значений совпадает со
списком значений второго параметра метода Close.

Напоминаем, что закрыть сам Word можно с помощью метода Quit объекта Word.Application.
Этот метод имеет в общем случае три параметра, совпадающих с параметрами метода
Close объекта Document.

Вывод документа на устройство печати можно осуществить с помощью метода PrintOut
объекта Document, например:

App.ActiveDocument.PrintOut;

Если нужно изменить параметры печати, следует указать значения соответствующих
параметров метода PrintOut (в случае Microsoft Word их около двадцати).

в начало

в начало

Вставка текста и объектовв документ и форматирование текста

Для создания абзацев в документе можно использовать коллекцию Paragraphs объекта
Document, представляющую набор абзацев данного документа. Добавить новый абзац
можно с помощью метода Add этой коллекции:

App.ActiveDocument.Paragraphs.Add;

Для вставки собственно текста в документ, тем не менее, применяется не объект
Paragraph, а объект Range, представляющий любую непрерывную часть документа
(в том числе и вновь созданный абзац). Этот объект может быть создан разными
способами. Например, можно указать начальный и конечный символы диапазона (если
таковые имеются в документе):

var
   Rng : Variant;
...
   Rng := App.ActiveDocument.Range(2,4);
//со 2-го по 4-й символы

или указать номер абзаца (например, только что созданного):

Rng:= App.ActiveDocument.Paragraphs.Item(1).Range;

или указать несколько абзацев, следующих подряд:

Rng := App.ActiveDocument.Range _
   (App.ActiveDocument.Paragraphs.Item(3).Range.Start,_
   App.ActiveDocument.Paragraphs.Item(5).Range.End)

Вставить текст можно с помощью методов объекта Range InsertBefore (перед диапазоном)
или InsertAfter (после диапазона), например:

Rng.InsertAfter(‘Это вставляемый текст’);

Помимо объекта Range текст можно вставлять с помощью объекта Selection, являющийся
свойством объекта Word.Application и представляющий собой выделенную часть документа
(этот объект создается, если пользователь выделяет часть документа с помощью
мыши, и может быть также создан с помощью приложения-контроллера). Сам объект
Selection можно создать, применив метод Select к объекту Range, например:

var
   Sel : Variant;
...
App.ActiveDocument.Paragraphs.Item(3).Range.Select;

В приведенном выше примере в текущем документе выделяется третий абзац.

Если мы хотим вставить строку текста в документ либо вместо выделенного фрагмента
текста, либо перед ним, это можно сделать с помощью следующего фрагмента кода:

var
   Sel : Variant;
...
   Sel := App.Selection;
   Sel.TypeText(‘Это текст, которым мы заменим _
      выделенный фрагмент’);

Отметим, что если свойство Options.ReplaceSelection объекта Word.Application
равно True, выделенный текст будет заменен на новый текст (этот режим действует
по умолчанию); если же нужно, чтобы текст был вставлен перед выделенным фрагментом,
а не вместо него, следует установить это свойство равным False:

App.Options.ReplaceSelection := False;

Символ конца абзаца при использовании объекта Selection может быть вставлен
с помощью следующего фрагмента кода:

Sel.TypeParagraph;

К объекту Selection, так же как и к объекту Range, можно применить методы InsertBefore
и InsertAfter. В этом случае, в отличие от предыдущего, вставляемый текст станет
частью выделенного фрагмента текста.

С помощью объекта Selection, используя его свойство Font и свойства объекта
Font, такие как Bold, Italic, Size,…, можно отформатировать текст. Например,
таким образом можно вставить строку, выделенную жирным шрифтом:

Sel.Font.Bold := True;
Sel.TypeText(‘Это текст, который мы выделим _
   жирным шрифтом.’);
Sel.Font.Bold := False;
Sel.TypeParagraph;

Для наложения на вставляемый текст определенного заранее стиля можно использовать
свойство Style этого же объекта, например:

Sel.Style := ‘Heading 1’;
Sel.TypeText(‘Это текст, который станет _
   заголовком’);
Sel.TypeParagraph;

Нередко документы Word содержат данные других приложений. Простейший способ
вставить такие данные в документ — использовать метод Paste объекта Range:

Var
   Rng : Variant;
...
   Rng := App.Selection.Range;
   Rng.Collapse(wdCollapseEnd);
   Rng.Paste;

Естественно, в этом случае в буфере обмена уже должны содержаться вставляемые
данные.

Если нужно поместить в буфер обмена часть документа Word, это можно сделать
с помощью метода Copy объекта Range:

Var
   Rng : Variant;
...
   Rng := App.Selection.Range;
   Rng.Copy;

Следующее, чему нужно научиться — перемещению курсора в нужное место текста,
чем мы и займемся в следующем разделе.

в начало

в начало

Перемещение курсора по тексту

Используя метод Collapse, можно «сжать» объект Range или объект Selection,
сократив его размер до нуля символов:

Rng.Collapse(wdCollapseEnd);

Параметр этого метода указывает, в начале или в конце исходного фрагмента окажется
новый объект Range или Selection. Если вы используете позднее связывание и ваше
средство разработки — не Visual Basic, нужно определить в приложении соответствующие
константы:

const
   wdCollapseStart = $00000001;
   //новый объект находится в начале фрагмента
   wdCollapseEnd = $00000000;
   //новый объект находится в конце фрагмента

Перемещать курсор по тексту можно с помощью метода Move объектов Range и Selection.
Этот метод имеет два параметра. Первый указывает на то, в каких единицах измеряется
перемещение — в символах (по умолчанию), словах, предложениях, абзацах и др.
Второй параметр указывает, на сколько единиц при этом нужно переместиться (это
число может быть и отрицательным; по умолчанию оно равно 1). Например, следующий
фрагмент кода:

Rng.Move;

приведет к перемещению курсора на один символ вперед, а

Rng.Move(wdParagraph,3);

приведет к перемещению курсора на три абзаца вперед. Отметим, что этот метод
использует следующие константы:

const          //Единицей перемещения является:
   wdCharacter           = $00000001; //символ
   wdWord = $00000002; //слово
   wdSentence           = $00000003; //предложение
   wdParagraph          = $00000004; //абзац
   wdStory = $00000006; //часть документа
                       //напр., колонтитул,
                       //оглавление и др.)
   wdSection              = $00000008; //раздел
   wdColumn              = $00000009; //колонка таблицы
   wdRow = $0000000A; //строка таблицы
   wdCell = $0000000C; //ячейка таблицы
   wdTable = $0000000F; //таблица

Нередко для перемещения по тексту используются закладки. Создать закладку в
текущей позиции курсора можно путем добавления члена коллекции Bookmarks объекта
Document c помощью метода Add, указав имя закладки в качестве параметра, например:

App.ActiveDocument.Bookmarks.Add(‘MyBookmark’);

Проверить существование закладки в документе можно с помощью метода Exists,
а переместиться на нее — с помощью метода Goto объектов Document, Range
или Selection:

Rng :=
App.ActiveDocument.Goto(wdGoToBookmark,  
   wdGoToNext, ,‘MyBookmark’);
Rng.InsertAfter(‘Текст, вставленный после  
   закладки’);

Значения констант для этого примера таковы:

const

wdGoToBookmark = $FFFFFFFF;
   //перейти к закладке
wdGoToNext = $00000002;
   //искать следующий объект в тексте

Отметим, что с помощью метода Goto можно перемещаться не только на указанную
закладку, но и на другие объекты (рисунки, грамматические ошибки и др.), и направление
перемещения тоже может быть различным. Поэтому список констант, которые могут
быть использованы в качестве параметров данного метода, довольно велик.

в начало

в начало

Создание таблиц

Создавать таблицы можно двумя способами. Первый заключается в вызове метода
Add коллекции Tables объекта Document и последовательном заполнении ячеек данными.
Этот способ при позднем связывании работает довольно медленно.

Второй способ, намного более «быстрый», заключается в создании текста из нескольких
строк, содержащих подстроки с разделителями (в качестве разделителя можно использовать
любой или почти любой символ, нужно только, чтобы он заведомо не встречался
в данных, которые будут помещены в будущую таблицу), и последующей конвертации
такого текста в таблицу с помощью метода ConvertToTable объекта Range. Ниже
приведен пример создания таблицы из трех строк и трех столбцов этим способом
(в качеcтве разделителя, являющегося первым параметром метода ConvertToTable,
используется запятая):

Var
   Rng : Variant;
...
   Rng := App.Selection.Range;
   Rng.Collapse(wdCollapseEnd);
   Rng.InsertAfter(‘1, 2, 3’);
   Rng.InsertParagraphAfter;
   Rng.InsertAfter(‘4,5,6’);
   Rng.InsertParagraphAfter;
   Rng.InsertAfter(‘7,8,9’);
   Rng.InsertParagraphAfter;
   Rng.ConvertToTable(‘,’);

Отметим, что внешний вид таблицы можно изменить с помощью свойства Format,
а также с помощью свойств коллекции Columns, представляющей колонки таблицы,
и коллекции Rows, представляющей строки таблицы объекта Table.

в начало

в начало

Обращение к свойствам документа

Свойства документа можно получить с помощью коллекции BuiltInDocumentProperties
объекта Document, например:

Memo1.Lines.Add(‘Название — ‘ + _
App.ActiveDocument.BuiltInDocumentProperties
[wdPropertyTitle].Value);
Memo1.Lines.Add(‘Автор — ‘ + _
App.ActiveDocument.BuiltInDocumentProperties
[wdPropertyAuthor]. _ Value);
Memo1.Lines.Add(‘Шаблон — ‘ + _
    App.ActiveDocument.BuiltInDocumentProperties 
[wdPropertyTemplate]. _Value) 

Константы, необходимые для обращения к свойствам документа по имени, приведены
в листинге 3.

Итак, в данном разделе мы изучили основные операции, которые наиболее часто
применяются при автоматизации Microsoft Word. Естественно, возможности автоматизации
Word далеко не исчерпываются приведенными примерами, однако я надеюсь, что,
руководствуясь основными принципами создания контроллеров Word, изложенными
в данной статье, и соответствующим справочным файлом, вы сможете ими воспользоваться —
мы с вами уже убедились, что это вовсе не так сложно.

Следующим приложением Microsoft Office, автоматизацию которого мы рассмотрим,
будет Microsoft Excel — второе по популярности приложение Microsoft Office.

в начало

в начало

Автоматизация Microsoft Excel

В данном разделе мы обсудим наиболее часто встречающиеся задачи, связанные
с автоматизацией Microsoft Excel. Но перед этим рассмотрим, каковы программные
идентификаторы основных объектов Microsoft Excel и что представляет собой его
объектная модель.

в начало

в начало

Программные идентификаторы и объектная модель Microsoft Excel

Существует три типа объектов Excel, которые могут быть созданы непосредственно
с помощью приложения-контроллера. Эти объекты и соответствующие им программные
идентификаторы перечислены ниже.

Все остальные объекты Excel являются так называемыми внутренними объектами.

Небольшой фрагмент объектной модели Microsoft Excel изображен на рис.2:

Основным в объектной модели Excel является объект Application, содержащий коллекцию
Workbooks объектов типа WorkBook. Каждый объект типа WorkBook содержит коллекцию
WorkSheets-объектов типа WorkSheet, Charts типа Chart и др. Манипуляция рабочими
книгами, их листами, ячейками, диаграммами реально осуществляется путем обращения
к свойствам и методам этих объектов.

Ниже мы рассмотрим наиболее часто встречающиеся задачи, связанные с автоматизацией
Microsoft Excel. Если вам встретилась задача, не совпадающая ни с одной из перечисленных,
вы можете попытаться найти подходящий пример на Visual Basic в справочном файле
VBAXL9.CHM, либо, как и в случае Microsoft Word, записать соответствующий макрос
и проанализировать его код.

в начало

в начало

Запуск Microsoft Excel, создание и открытие рабочих книг

Для создания примеров использования Microsoft Excel можно использовать код
создания контроллера, приведенный в разделе «Общие принципы создания контроллеров
автоматизации», заменив первый оператор в приведенном примере на следующий:

AppProgID := ‘Excel.Application’;

и заменить комментарии кодом, манипулирующим свойствами и методами объекта
Excel.Application. Отметим, однако, что подключение контроллера автоматизации
к имеющейся версии Excel с помощью метода GetActiveOleObject может привести
к тому, что вся клиентская часть Excel окажется невидимой (это происходит, если
имеющаяся копия Excel запущена в режиме, когда ее пользовательский интерфейс
недоступен). Причины подобного поведения автору неизвестны. Поэтому, если существует
вероятность возникновения подобной ситуации, лучше упростить код создания контроллера
и всегда создавать новую копию Excel.

Изучение создания контроллеров Excel мы начнем с создания и открытия рабочих
книг.

Создать новую рабочую книгу Excel можно, используя метод Add коллекции Workbooks
объекта Application:

App.WorkBooks.Add;

Для создания рабочей книги на основе шаблона следует указать его имя в качестве
первого параметра метода Add:

App.WorkBooks.Add(‘C:Program FilesMicrosoft _
   OfficeTemplates1033invoice.xlt’);

В качестве первого параметра этого метода можно также использовать следующие
константы:

const
   xlWBATChart = $FFFFEFF3;
//рабочая книга состоит из листа с диаграммой
   xlWBATWorksheet = $FFFFEFB9;
//рабочая книга состоит из листа с данными

В этом случае рабочая книга будет содержать один лист типа, заданного указанной
константой (график, обычный лист с данными и др.)

Для открытия уже существующего документа следует воспользоваться методом Open
коллекции WorkBooks:

App.Documents.Open(‘C:MyExcelFile.xls’);

Отметим, что свойство ActiveWorkBook объекта Excel.Application указывает на
текущую активную рабочую книгу среди одной или нескольких открытых. Помимо этого
к рабочей книге можно обращаться по ее порядковому номеру, например ко второй
открытой рабочей книге можно обратиться так:

App.WorkBooks[2]

Обратите внимание на то, что в Delphi при использовании позднего связывания
синтаксис, используемый для обращения к членам коллекций объектов Excel, отличен
от синтаксиса, используемого для обращения к объектам Word — в случае Word
мы использовали метод Item, а в случае Excel мы обращаемся к членам коллекции
как к элементам массива. Если же вы используете Visual Basic, синтаксис, применяемый
для обращения к членам коллекций, будет одинаков для всех коллекций Microsoft
Office.

Сделать рабочую книгу активной можно с помощью метода Activate:

App.WorkBooks[2].Activate;

Следующее, чему следует научиться — это сохранять рабочие книги в файлах.

в начало

в начало

Сохранение, печать и закрытие рабочих книг Microsoft Excel

Закрытие документа может быть осуществлено с помощью метода Close:

App.WorkBooks[2].Close;

или

App.ActiveWorkBook.Close;

Метод Close имеет несколько необязательных (в случае позднего связывания) параметров,
влияющих на правила сохранения рабочей книги. Первый из параметров принимает
значения True или False и влияет на то, сохранять ли изменения, внесенные в
рабочую книгу. Второй параметр (типа Variant) — имя файла, в котором нужно
сохранить рабочую книгу (если в нее были внесены изменения). Третий параметр,
также принимающий значения True или False, влияет на то, следует ли пересылать
документ следующему пользователю по электронной почте, и может быть проигнорирован,
если эта функциональность не используется.

App.ActiveWorkBook.Close(True,’C:MyWorkBook.xls’);

Просто сохранить рабочую книгу, не закрывая ее, можно с помощью методов Save
или SaveAs:

App.ActiveWorkBook.Save;

или

App.ActiveWorkBook.SaveAs(‘C:MyWorkBook.xls’);

Метод SaveAs имеет более десятка параметров, влияющих на то, как именно сохраняется
документ (под каким именем, с паролем или без него, какова кодовая страница
для содержащегося в ней текста и др.).

Закрыть сам Excel можно с помощью метода Quit объекта Excel.Application. В
случае Excel этот метод параметров не имеет.

Вывод документа Excel на устройство печати можно осуществить с помощью метода
PrintOut объекта WorkBook, например:

App.ActiveWorkBook.PrintOut;

Если нужно изменить параметры печати, следует указать значения соответствующих
параметров метода PrintOut (в случае Excel их восемь).

в начало

в начало

Обращение к листам и ячейкам

Обращение к листам рабочей книги производится с помощью коллекции WorkSheets
объекта WorkBook. Каждый член этой коллекции представляет собой объект WorkSheet.
К члену этой коллекции можно обратиться по его порядковому номеру, например:

App.WorkBooks[1].WorkSheets[1].Name := _
   ‘Страница 1’;

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

К листу рабочей книги можно обратиться и по имени, например:

App.WorkBooks[1].WorkSheets[‘Sheet1’].Name := _
   ‘Страница 1’;

Обращение к отдельным ячейкам листа производится с помощью коллекции Cells
объекта WorkSheet. Например, добавить данные в ячейку B1 можно следующим образом:

App.WorkBooks[1].WorkSheets[‘Sheet1’].Cells[1,2].Value:=’25’;

Здесь первая из координат ячейки указывает на номер строки, вторая — на
номер столбца.

Добавление формул в ячейки производится аналогичным способом:

App.WorkBooks[1].WorkSheets[‘Sheet1’] _
   .Cells[3,2].Value := ‘ =SUM(B1:B2)’;

Очистить ячейку можно с помощью метода ClearContents.

Форматирование текста в ячейках производится с помощью свойств Font и Interior
объекта Cell и их подсвойств. Например, следующий фрагмент кода выводит текст
в ячейке красным жирным шрифтом Courier кегля 16 на желтом фоне:

App.WorkBooks[1].WorkSheets[1].Cells[3,2].Interior _
   .Color := clYellow;
App.WorkBooks[1].WorkSheets[1].Cells[3,2].Font _
   .Color := clRed;
App.WorkBooks[1].WorkSheets[1].Cells[3,2] _
   .Font.Name := ‘Courier’;
App.WorkBooks[1].WorkSheets[1].Cells[3,2] _
   .Font.Size := 16;
App.WorkBooks[1].WorkSheets[1].Cells[3,2] _
.Font.Bold := True;

Объект

Программный идентификатор

Комментарий

Application

Excel.Application, Excel.Application.9

С помощью этого программного идентификатора создается экземпляр приложения
без открытых рабочих книг

WorkBook

Excel.AddIn

С помощью этого программного идентификатора создается экземпляр расширения
(add-in) Excel (имеющиеся расширения доступны с помощью пункта меню Tools
| Add-Ins)

 

Excel.Chart, Excel.Chart.8

Рабочая книга, созданная с помощью этих программных идентификаторов,
состоит из двух листов — одного для диаграммы, другого — для
данных, на основе которых она построена

 

Excel.Sheet, Excel.Sheet.8

Рабочая книга, созданная с помощью этих программных идентификаторов,
состоит из одного листа

Вместо свойства Color можно использовать свойство ColorIndex, принимающее значения
от 1 до 56; таблицу соответствий значений этого свойства реальным цветам можно
найти в справочном файле VBAXL9.CHM.

Обратиться к текущей ячейке можно с помощью свойства ActiveCell объекта Excel.Application,
а узнать местоположение ячейки можно с помощью свойства Address объекта Cell,
например:

ShowMessage(App.ActiveCell.Address);

Помимо обращения к отдельным ячейкам, можно манипулировать прямоугольными областями
ячеек с помощью объекта Range, например:

App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’] _
   .Value := ‘Test’;
App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’] _
   .Font.Color := clRed;

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

Объект Range также часто используется для копирования прямоугольных областей
через буфер обмена. Ниже приведен пример, иллюстрирующий копирование такой области:

App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’].Copy;
App.WorkBooks[1].WorkSheets[2].Range[‘A11:C15’].Select;
App.WorkBooks[1].WorkSheets[2].Paste;

Обратите внимание на то, что диапазон, куда копируются данные, предварительно
выделяется с помощью метода Select.

Отметим, что примерно таким же образом можно копировать данные и из других
приложений (например, из Microsoft Word).

Довольно часто при автоматизации Excel используются его возможности, связанные
с построением диаграмм. Ниже мы рассмотрим, как это сделать.

в начало

в начало

Создание диаграмм

Диаграммам Excel соответствует объект Chart, который может располагаться как
на отдельном листе, так и на листе с данными. Если объект Chart располагается
на листе с данными, ему соответствует член коллекции ChartObjects объекта WorkSheet
и создание диаграммы нужно начать с добавления элемента в эту колекцию:

Ch:=App.WorkBooks[1].WorkSheets[2].ChartObjects.Add(10,50,400,400);

Параметрами этого метода являются координаты левого верхнего угла и размеры
диаграммы в пунктах (1/72 дюйма).

Если же диаграмма располагается на отдельном листе (не предназначенном для
хранения данных), то создание диаграммы нужно начать с добавления элемента в
коллекцию Sheets объекта Application (которая отличается от коллекции WorkSheets
тем, что содержит листы всех типов, а не только листы с данными):

App.WorkBooks[1].Sheets.Add(,,1,xlWBATChart);

В этом случае первый параметр метода Add указывает порядковый номер листа,
перед которым нужно поместить данный лист (или данные листы, если их несколько),
второй параметр — порядковый номер листа, после которого нужно поместить данный
лист (используется обычно один из них), третий параметр — сколько нужно
создать листов, а четвертый — какого типа должен быть лист. Значения четвертого
параметра совпадают со значениями первого параметра метода Add коллекции WorkBooks
объекта Application, и при использовании имен соответствующих констант следует
определить их в приложении-контроллере.

Простейший способ создать диаграмму, с точки зрения пользователя, — создать
ее с помощью соответствующего эксперта на основе прямоугольной области с данными.
Точно так же можно создать диаграмму и с помощью контроллера автоматизации —
для этой цели у объекта Chart, являющегося свойством объекта ChartObject (члена
коллекции ChartObjects), имеется метод ChartWizard. Первым параметром этого
метода является объект Range, содержащий диапазон ячеек для построения диаграммы,
а вторым — числовой параметр, указывающий, какого типа должна быть эта
диаграмма:

Var Ch: Variant;
…
Ch.Chart.ChartWizard _
(App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’], _
   xl3DColumn);

Возможные значения параметра, отвечающего за тип диаграммы, можно найти в справочном
файле.

У объекта Chart имеется множество свойств, отвечающих за внешний вид диаграммы,
с помощью которых можно изменить ее точно так же, как пользователи делают это
вручную. Ниже приводится пример создания заголовка диаграммы и подписей вдоль
ее осей (отметим, что оси есть не у всех типов диаграмм).

Ch.Chart.HasTitle :=1;
Ch.Chart.HasLegend := False;
Ch.Chart.ChartTitle.Text := _
   ‘Пример диаграммы Excel ‘;
Ch.Chart.Axes(1).HasTitle := True;
Ch.Chart.Axes(1).AxisTitle.Text := _
   ‘Подпись вдоль оси абсцисс’;
Ch.Chart.Axes(2).HasTitle := True;
Ch.Chart.Axes(2).AxisTitle.Text := _
   ‘Подпись вдоль оси ординат’;

Еще один способ создания диаграммы — определить все ее параметры с помощью
свойств объекта Chart, включая и определение серий, на основе которых она должна
быть построена. Данные для серии обычно находится в объекте Range, содержащем
строку или столбец данных, а добавление серии к диаграмме производится путем
добавления члена к коллекции SeriesCollection, например:

App.WorkBooks[1].Sheets.Add(,,1,xlWBATChart);
App.WorkBooks[1].Sheets[1].ChartType := xl3DPie;
Rng:=App.WorkBooks[1].WorkSheets[2].Range[‘B1:B5’];
App.WorkBooks[1].Sheets[1].SeriesCollection.Add(Rng);

В данном примере к диаграмме, созданной на отдельном листе, специально предназначенном
для диаграмм, добавляется одна серия на основе диапазона ячеек другого листа.

Мы изучили основные операции, применяемые при автоматизации Microsoft Excel.
Описания некоторых аналогичных операций для Microsoft Word, например обращение
к свойствам документов, были здесь опущены во избежание повторов. Возможности
автоматизации Microsoft Excel и Word далеко не исчерпываются приведенными примерами.
Сведения о них можно всегда найти в соответствующем справочном файле.

В следующих статьях данного цикла будет рассмотрена автоматизация других приложений
Microsoft Office — Microsoft PowerPoint, Microsoft Access, Microsoft Outlook
и др.

КомпьютерПресс 11’2000

Подписаться на эту метку по RSS

    Как автоматически увеличивать номер договора при каждом открытии документа

    Иван задал вопрос:

    Существует договор в формате word 2003. У него есть номер. Как можно сделать, чтобы при новом открытии данного документа у него увеличивался номер на один?

    Читать полностью

    Автотекст с последовательной нумерацией

    Олег интересуется:

    Как реализовать (макрос или, может, автотекст с полем?) вставку кусочка текста с цифрами, которые возрастают по принципу n+1? Например, «бла-бла-бла [71] и бла-бла-бла-бла [72], и еще бла-бла-бла [73]», при этом [^#^#] вставляем нажатием одной комбинации клавиш. Чувствую, что это как-то связано с полем нумерации, но как?

    В качестве бонуса еще было бы замечательно, если бы этот кусочек вставлялся в заранее заданном формате, а не в формате окружающего его текста.

    Олег, решение подсказал Александр Витер. Он предложил использовать поле последовательной нумерации SEQ. Вот что он написал:

    Можно сделать элемент автотекста, который содержит в себе поле SEQ и вставлять его куда нужно.

    Например, код поля можно задать так: { SEQ нумерация * MERGEFORMAT }. Окружить его квадратными скобками и добавить в автотекст. На этот автотекст поставить сочетание клавиш и все. И таких списков может быть сколько угодно. У меня получалось без проблем использовать 6 таких последовательностей. Они отличаются друг от друга только идентификаторами (в примере идентификатором последовательности является слово «нумерация»)

    Если есть вопросы, задавайте.

    Автоматическая расстановка переносов

    Галина интересуется:

    Подскажите, как настроить word, чтобы при открытии любого документа текст был с переносами и чтобы не приходилось каждый раз выбирать сервис — язык — расстановка переносов?

    Галина, полагаю, что у вас по каким-то причинам простая настройка (то есть установка принудительного переноса) действует только на конкретный документ и не может быть настроена по умолчанию для всех документов. Но можно обойти это, если воспользоваться следующим макросом:

    Читать полностью

    Ввод повторяющихся фрагментов текста в Word 2007

    Александр задал вопрос:

    Хочу сделать шаблон в 2007-м, с использованием элементов управления, при этом один элемент должен повторяться в нескольких местах документа. То есть, поменял дату в начале и она поменялась по всему документу. Аналогично сделано в стандартном шаблоне «Современный отчет». Например, там есть «подзаголовок» и еще эти элементы выделены оранжевыми «тегами». Но у меня ничего не получается, и в хелпе ничего нормального на эту тему нет.

    В стандартных шаблонах редактора Word 2007 используются именно элементы управления содержимым, а не закладки с полями REF в версии редактора Word 2003 (читайте в заметке Ввод часто повторяющихся фрагментов текста).

    Читать полностью

    Автоматическая нумерация билетов

    Rustam спрашивает:

    Есть задача: нужно пронумеровать билеты от 00001 до 10000. Шаблон билетов сделан в ворде , 6 штук на один лист. При этом в разные дни нужно разное кол-во билетов. Понятно, что нумеровать вручную очень рутинно, как автоматизировать эту задачу?

    Решить задачу можно, если добавить в шаблон документа в каждый билет вместо номеров, проставляемых вручную, поле следующего содержания:

    Читать полностью

    Быстрое создание нового документа на основе шаблона

    Если вы часто создаете документы, основанные на одном конкретном шаблоне, то вам пригодится следующий совет.

    Читать полностью

    Как ускорить создание документов

    Деятельность любого предприятия сопровождается созданием множества документов. Ежедневно мы выпускаем и подписываем десятки и сотни приказов и распоряжений, договоров и протоколов, писем и факсов. Многие из этих документов — однотипные по своей форме, и нам приходится создавать их снова и снова.

    Возникает вопрос: а нельзя ли автоматизировать процедуру создания таких однотипных документов, не прибегая при этом к помощи дорогостоящих программных средств? Оказывается, возможности для подобной автоматизации представляют любые современные текстовые процессоры, включая, пожалуй, наиболее популярный из них — Microsoft Word.

    Три шага к совершенству

    Читать полностью

    Шаблон ГОСТ для MS Word

    Для всех, кто оформляет документацию по государственным стандартам (ГОСТ), я сообщаю адрес сайта, на котором можно скачать разработанный Дмитрием Васильевым специальный шаблон — Шаблон ГОСТ для MS Word.

    Цитирую информацию с сайта автора:

    Данный шаблон предназначен для того, чтобы облегчить оформление электронных документов в соответствие с ГОСТ 2.104-68*, который определяет правила оформления конструкторской документации. В состав шаблона входят справка (встроенная и в формате *.chm), рамки титульного листа, форм 2 и 2а (включая альбомную ориентацию), лист регистрации изменений, листы спецификаций.

    Для корректной работы шаблона необходимы файлы шрифтов ГОСТ Тип А и ГОСТ Тип В, которые необходимо установить в системе. Не помешает также установить уровень безопасности Word на “Средний” или “Низкий”, чтобы Вы имели возможность просматривать встроенную справку.

    На мой скромный взгляд данный шаблон является лучшей разработкой среди аналогичных (А.К.: исправлена опечатка) решений.

    Ввод часто повторяющихся фрагментов текста

    Игорь спрашивает:

    Как в Word сделать так, чтобы в разных частях документа был расположен одинаковый кусок текста и чтобы при изменении его, например, только в начале документа — он изменялся во всех остальных таких же кусках текста во всем документе?

    Подобный вопрос за последний месяц мне задали уже несколько человек. На самом деле, все достаточно просто. Нужно использовать в документе специальное поле REF. Вот как это делается на примере одного шаблона.

    Предположим, что есть договор купли-продажи между Продавцом и Покупателем. В начале договора указываются фамилия, имя, отчество Продавца и Покупателя, а также их реквизиты. Дальше в тексте документе есть специальные поля, которые автоматически обновляются и заполняются тем текстом (данными), которые введены в начале документа — в данном случае — ФИО сторон и их адреса.

    Итак, создайте новый документ и сохраните его как шаблон, например, под именем Договор.dot. Далее выполните следующие действия:

    Читать полностью

    Быстрый ввод текста с помощью команды =rand()

    О такой полезной команде =rand() я уже писал в заметке “Глюки”, “пасхальные яйца” или служебные команды Word.

    Но вручную вводить эту команду не всегда бывает удобно. Поэтому лучше иметь ее всегда под рукой, а точнее — иметь ее добавленной в контекстное меню, вызываемое по щелчку правой кнопкой мыши. Тогда не придется вспоминать ее синтаксис и вводить руками:

    Если вы хотите добавить эту команду в контекстное меню, откройте ваш шаблон Normal.dot (Normal.dotm) в редакторе Word и/или вызовите редактор Visual Basic с помощью комбинации клавиш «Alt»+«F11». Затем перейдите на проект шаблона и вставьте новый модуль для макросов.

    Читать полностью

    Использование форм для ввода данных в документ

    Продолжаем серию заметок по теме автоматизации документов.

    Сегодня я расскажу, как добавить к вашим документам специальную форму, с помощью которой можно легко и просто вводить данные в документ. Введенные в форму данные адресата по нажатию кнопки на форме будут автоматически внесены в документ.

    Предполагается, что у вас есть готовый шаблон документа, например, письма. В качестве образца можно использовать подготовленный мною шаблон официального письма вымышленной организации.

    Использование шаблона необходимо, ведь на его основе вы в дальнейшем будете создавать свои документы.

    Читать полностью

    Автозаполняемые колонтитулы

    Сегодня я хочу рассказать об одном из способов автоматизации документов, в частности, об автообновлении колонтитулов. Речь идет об использовании в колонтитулах поля StyleRef. Кстати, ранее я уже писал заметку на эту тему — Как вставить название главы в колонтитул.

    Итак, предположим, что вы создаете документ, состоящий из нескольких именованных глав. Каждая глава начинается с нового раздела. Текст в колонтитуле (обычно верхний) каждого раздела должен автоматически меняться в зависимости от наименования главы раздела. Как это реализовать?

    Читать полностью

    Как добавить свой текст на бланк документа

    В феврале 2008 года я получил три письма от моих читателей с практически одинаковым вопросом:

    Есть готовые бумажные печатные бланки с неким текстом. Пустые места в бланке нужно заполнять с помощью редактора Word. Затем набранный текст выводится на принтер на бланке. Надо, чтобы выводимый текст аккуратно совпал с соответствующими полями бланка. Как это сделать?

    Мой ответ был таков: это можно сделать только опытным путем, первоначально создав шаблон документа с размерами вашего бланка и добавляя в нужные места шаблона (сверяясь с бланком) специальные поля для ввода текста.

    Распечатать получившийся документ и опять сверить с бланком. Мелкие расхождения в размере шрифта, интервале и других деталях следует корректировать индивидуально для каждого поля.

    После того, как вы убедитесь, что поля в шаблоне совпадают с пустыми местами на бланке, можно создавать на основе этого шаблона ваши документы: вводя в поля ваш текст, вставляя в принтер бланк и печатая получившийся документ.

    Если все будет сделано правильно, то есть шанс, что текст в документе будет совпадать с пустыми местами на бланке.

    Способ автоматической нумерации таблиц, рисунков, формул и ссылок

    Спустя год после публикации заметки Как автоматически вставить подпись к рисунку или таблице, предлагаю вашему вниманию альтернативный (в какой-то мере) совет от читательницы Ирины. Возможно это решение кому-то пригодится.

    Ирина пишет:

    Нумерацию таблиц, рисунков и формул я провожу с помощью команды «Название» (меню Вставка-Ссылка), выбираю соответствующее значение в выпадающем списке «Подпись» и устанавливаю флажок на параметре «Исключить подпись из названия». Опцию «Автоназвание» я не использую.

     
    Рисунки и таблицы
    Слова «рисунок» или «таблица» пишу руками, точнее создала макрос для вставки рисунков и таблиц. С помощью клавиши «Enter» переношу номер рисунка или таблицы на следующую строку (в строке оказывается только номер), затем в нужном месте с помощью команды «Перекрестная ссылка» (меню Вставка-Ссылка) ссылаюсь на него (вставляется только номер, а слова «рисунок» или «таблица» пишу самостоятельно в нужном падеже).
    Перехожу обратно к рисунку и возвращаю номер на свое место.
    Если нужно сослаться несколько раз на один и тот же рисунок или таблицу, то повторяю операцию, либо копирую уже сделанную ссылку. Таким образом, ссылки соответствуют ГОСТу и проблем с обновлением полей не возникает.

     
    Формулы
    Формулы я вставляю в таблицу с невидимыми границами с одной строкой и двумя столбцами. Делаю это с помощью макроса и в итоге получаю таблицу, в первом столбце которой по центру стоит запятая, а во втором — по центру находятся круглые скобки. В первый столбец заношу формулу, во второй с помощью команды «Название» ее номер. Ссылаюсь на формулу с помощью команды «Перекрестная ссылка» и получаю при этом номер формулы в круглых скобках (ячейка таблицы воспринимается программой как новая строка).

    Если у кого-то есть вопросы к Ирине по предложенному способу, задавайте в комментариях.

    О копировании и вставке часто повторяющихся фрагментов текста

    Как известно, буфер обмена редактора Word, да и системный буфер обмена позволяют хранить скопированные фрагменты текста лишь на период работы редактора или пока предыдущий фрагмент не будет замещен новым текстом или графическим объектом.

    Чтобы обойти эти ограничения создаются специализированные утилиты, которые позволяют заранее создавать нужный текст и затем включать его в любое текстовое поле с помощью сочетаний клавиш.

    Читать полностью

    Как автоматически вставить подпись к рисунку или таблице

    Если ваш текст включает в себя какие-то рисунки или таблицы, то подписываете ли вы их? Подписывание этих объектов обязательно, если вы готовите рукопись к дальнейшей публикации. Кроме того, наличие подписей придает профессиональный вид вашим документам и предоставляет вам еще много преимуществ и возможностей, таких например, как создание списка этих объектов.

    Нужно избегать ручного подписывания. Для этого редактор Word имеет функцию автоматического добавления названий к различным объектам: рисункам, таблицам, диаграммам, мультимедиа-файлам и др.

    Читать полностью

    Люди химических профессий, а также старшеклассники, студенты, аспиранты и прочие, изучающие эту замечательную науку, наверняка не раз озадачивались утомительным процессом ввода формул в Microsoft Word. Рассматриваемая сегодня бесплатная надстройка Mendeleev 4.0 к этому популярному текстовому редактору призвана значительно упростить работу с несложными химическими формулами и уменьшить количество возникающих при их вводе ошибок.

    Читать полностью

    Автоматизация текстового набора в Word

    На прошлой неделе постоянный читатель сайта задал мне вопрос об автоматизации своей работы с редактором Word. Потребовалось некоторое время, чтобы найти ответ. И в результате появилась очередная статья в онлайн-журнале «Компьютерра».

    Теперь публикую и на сайте.

    Вопрос:

    Я знаю, что в Word есть функция, когда какая-либо комбинация клавиш меняется на текст, который я заранее ввел. Это удобно, если одна и та же фраза или слово много раз повторяется в документе. Мне казалось, что это в «Автозамене», но у меня ничего не получилось. Подскажите, пожалуйста правильный ответ.

    Действительно, такая возможность есть. Правда, для того чтобы назначить какому-либо часто повторяющемуся словосочетанию «горячую клавишу» придется немного пощелкать мышкой.

    Читать полностью

    Имя файла на автомате

    Недавно на сайте wordtips.vitalnews.com я прочитал об интересном макросе, который позволяет автоматически (без вызова команды Сохранить как (Save as) из меню) сохранять ваш документ с именем, уже включающим в себя текущую дату и словом/буквой, которое вы можете определить по своему усмотрению.

    Это может понадобиться, когда вы создаете однотипные документы под одним и тем же именем, отличающиеся друг от друга лишь датой создания.

    Читать полностью

Содержание

  • 1 Надстройка для автоматизированного заполнения договоров в Word
    • 1.1  
  • 2 Автоматическое заполнение договора между двумя юридическими лицами
  • 3 Автоматическое заполнение договора между юридическим и физическим лицом
  • 4 Возможности надстроек для заполнения договоров
  • 5 Универсальная надстройка для Word по заполнению любых документов Word данными из Excel
  • 6 Надстройки для Excel по заполнению любых документов Word
    • 6.1 Другие материалы по теме:
    • 6.2 Создание автоматического содержания (оглавления) в Ворде
    • 6.3 Помогла ли вам эта статья?

Александр задал вопрос:

Хочу сделать шаблон в 2007-м, с использованием элементов управления, при этом один элемент должен повторяться в нескольких местах документа. То есть, поменял дату в начале и она поменялась по всему документу. Аналогично сделано в стандартном шаблоне «Современный отчет». Например, там есть «подзаголовок» и еще эти элементы выделены оранжевыми «тегами». Но у меня ничего не получается, и в хелпе ничего нормального на эту тему нет.

В стандартных шаблонах редактора Word 2007 используются именно элементы управления содержимым, а не закладки с полями REF в версии редактора Word 2003 (читайте в заметке ).

Самый простой способ добавить в свой шаблон (используйте шаблоны, а не документы!) блок с повторяющейся информацией, это воспользоваться стандартными блоками (экспресс-блоки). На вкладке ленты Вставка в группе команд Текст нажмите кнопку Экспресс-блоки. Из списка команд выберите команду Свойства. Откроется дополнительное меню из 15 встроенных свойств документа:

Для наших целей вполне подойдут два свойства: Аннотация и Примечание.

Вставьте в документ какой-нибудь один блок из вышеназванных, например, Примечание и, при необходимости, задайте его свойства. Чтобы задать свойства для блока, выделите блок, перейдите на вкладку Разработчик и в группе команд Элементы управления нажмите кнопку Свойства. Откроется диалоговое окно Свойства элемента управления содержимым:

В этом окне можно изменить данные в полях Название, Тег, задать стиль для блока и др.

Теперь скопируйте этот элемент в буфер обмена и вставьте его в любом месте документа, где вы планируете разместить повторяющийся фрагмент текста. После изменения текста в первом блоке и выхода из него (курсор ввода поместить на любом месте документа), автоматически изменится текст во втором блоке. При этом неважно, в каком именно блоке вы измените текст — во втором, или в третьем (если таких одинаковых блоков у вас несколько). Изменяя текст в любом блоке — изменится текст во всех ваших блоках.

Но существует один недостаток в этом решении. В вашем шаблоне может быть не один текстовый блок (с определенным текстом), который нужно повторять в нескольких местах документа. Если вы вставите еще одно Примечание, то его текст будет аналогичным тексту в уже имеющихся в документе блоках. Но, что если нужно будет добавить другой блок с другим текстом? Какой же выход?

Один из разработчиков дополнений к радактору Word — Грегори Макси — создал специальный шаблон-надстройку для Word 2007, с помощью которого можно создавать различные текстовые элементы в шаблонах для реализации повторяющихся данных в тексте. Вот ссылка на статью Грега (в конце статьи есть ссылка на архивированный файл шаблона): . Распакуйте архив в папку STARTUP (C:Program FilesMicrosoft OfficeOffice12STARTUP) и перезагрузите редактор. На ленте редактора появится вкладка Надстройки, где будут размещены три кнопки:

Работа с этой надстройкой очевидна и не представляет трудностей (достаточно начальных знаний английского языка). На странице автора в картинках все объснено.

Перед тем, как создавать ваши блоки, нужно сохранить документ с одним из расширений Word 2007. Впрочем, программа сама предупредит вас об этом.

Договорные отношения давно и прочно закрепились в нашей жизни, договора встречаются везде и повсеместно, практически ничто уже не обходится без заключения какого-либо договора. Предоставление услуг, выполнение работ, поставка материальных ценностей, аренда имущества, купля-продажа и многое другое — все это договоры. Договоры, как правило, составляются юристами и учитывают все нюансы той или иной деятельности. Кураторы же имеют дело с типовыми формами договоров и производят с ними однотипные, повторяющиеся действия, которые можно и нужно автоматизировать.

Итак, менеджеры или кураторы договоров, используя текстовый редактор, (например Microsoft Word) вносят изменения в типовые формы, шаблоны, корректируя определенные поля, такие как номер и дата договора, наименование контрагента, стоимость договора, паспортные данные, банковские реквизиты. При этом пересчитываются различные суммы, такие например как НДС, кстати суммы в договорах зачастую дублируются прописью. Для составления преамбулы договора, такие параметры как имена, фамилии и должности склоняются в различные падежи. Все это требует повышенного внимания и приводит к зрительным нагрузкам. Чем объемнее договор, чем больше в нем различных форм и приложений, тем сильнее желание автоматизировать его заполнение.

Автоматическое заполнение договоров можно реализовать различными способами, но подробнее остановиться хотелось бы на наиболее удобном и доступном. И как ни странно такой способ заложен в самом текстовом редакторе Microsoft Word. Встроенный в редактор язык программирования Visual Basic for Application позволяет успешно автоматизировать рутинные задачи, к которым несомненно можно отнести и заполнение договоров. Видов договоров множество: договор подряда, договор поставки, договор аренды, договор купли-продажи, договор комиссии, кредитный договор и многое другое, но все они имеют приблизительно одинаковые поля для заполнения. Если эти поля разметить специальным образом в шаблоне договора, а необходимую информацию запросить у пользователя через диалоговое окно, то впоследствии можно программно заменить эти поля на необходимую информацию.

как сделать в word автозаполнение

При этом часть рутинной работы пользователю выполнять все-таки придется при внесении данных в специальную форму — диалоговое окно, но лишь часть, все остальное будет делать уже машина. Запуск надстройки, вызов диалогового окна осуществляется нажатием кнопки, выведенной в меню, либо на ленту, в зависимости от приложения.

Использовать систему для ускоренного заполнения полей договора проще, чем кажется на первый взгляд. Для начала нужно определиться с теми параметрами, которые будут запрашиваться у пользователя надстройки и выбрать наиболее подходящую конфигурацию надстройки. Далее необходимо скачать и установить надстройку для Word по заполнению договоров. Предварительно разметить свой шаблон договора метками, описанными в документации к надстройке. Открыть шаблон договора и вызвать диалоговое окно надстройки. Затем заполнить поля диалогового окна (вручную заполняется только часть полей, другая часть формируется автоматически, например суммы, написанные прописью и даты) и запустить программу нажатием кнопки «OK».

 

Автоматическое заполнение договора между двумя юридическими лицами

В случае заключения договора между юридическими лицами изменяемыми (запрашиваемыми у пользователя в диалоговом окне) являются: наименования организаций, фамилии их представителей, адреса и банковские реквизиты. Различаться также могут суммы, валюты и налоговые ставки. Все эти параметры договора вынесены для заполнения на специальную форму —  диалоговое окно.

В надстройке реализован выбор валюты (по умолчанию установлены рубли), преобразование даты, автоматический подсчет НДС с округлением до двух знаков после запятой (при наличии этого налога), автоматическое написание суммы договора и налога прописью, автоматическое распознавание пола подписанта по имени и отчеству с последующим склонением в родительный падеж (для преамбулы) должности, фамилии, имени и отчества. Если в данных подписантов вместо полных имен используются инициалы, то программе будет необходима подсказка пола подписанта при помощи опции М/Ж. После автоматического заполнения полей сформированный договор сохраняется под уникальным именем в папку, в которой хранится шаблон.

как сделать в word автозаполнение

надстройка для заполнения договора между юридическими лицами (полный вариант)

На практике чаще используется упрощенная модель надстройки, когда «свои» реквизиты указываются в тексте договора и изменениям не подлежат, а в диалоговом окне запрашиваются только данные контрагента.

как сделать в word автозаполнение

видео по работе с надстройкой

надстройка для заполнения договора между юридическими лицами (сокращенный вариант)

Автоматическое заполнение договора между юридическим и физическим лицом

Договоры между юридическими и физическими лицами отличаются наличием паспортных данных одной из сторон. Отсюда и несколько другой набор полей в диалоговом окне, где кроме паспортных данных присутствуют адреса и телефоны. В остальном все механизмы аналогичны описанным в предыдущем пункте.

как сделать в word автозаполнение

надстройка для заполнения договора между юридическим и физическим лицом (стандартный вариант)

Возможности надстроек для заполнения договоров

Надстройки позволяют осуществлять:

1) выбор валюты;

2) преобразование даты к виду «26» сентября 2013;

3) автоматический подсчет НДС с округлением до двух знаков после запятой (при наличии этого налога);

4) автоматическое написание суммы договора и налога прописью;

5) автоматическое распознавание пола подписанта по имени и отчеству с последующим склонением в родительный падеж должности, фамилии, имени и отчества (для преамбулы);

*Если в данных подписантов вместо полных имен используются инициалы, то программе будет необходима подсказка пола подписанта при помощи опции М/Ж.

6) автоматическое формирование инициалов подписантов;

7) автоматическое сохранение сформированного договора под уникальным именем в папку, в которой хранится шаблон;

8) импорт данных из диалогового окна в файл Excel;

9) экспорт данных из файла Excel в диалоговое окно.

Аналогичным образом можно настроить заполнение любых шаблонов документов для юристов, нотариусов, бухгалтеров, финансистов, сметчиков, риелторов и многих других.

Универсальная надстройка для Word по заполнению любых документов Word данными из Excel

Договоры, соглашения, доверенности, заказы, заявки, акты, квитанции и многое другое можно автоматически заполнять данными из Excel при помощи универсальной надстройки. Количество изменяемых полей в документе не привязано к полям диалогового окна поэтому пользователь сам определяет их количество и названия для кодов, используемых в шаблонах документов. Для заполнения активного документа Word достаточно указать файл Excel с исходными данными. Помимо этого предусмотрено массовое заполнение документов Word.

как сделать в word автозаполнение

надстройка для Word по заполнению документов Word данными из Excel

Возможна также доработка стандартных надстроек, представленных на этой странице под специфические параметры заказчика: удаление ненужных, добавление новых текстовых полей и выпадающих списков диалогового окна (цена договорная).

Надстройки для Excel по заполнению любых документов Word

Все рассмотренные выше надстройки устанавливаются в приложение Microsoft Word. Для заполнения шаблонов документов Word можно также использовать надстройки, которые устанавливаются в приложение Excel. При этом запускаться надстройка будет из Excel. В случае, когда исходные данные вносятся на рабочий лист книги Excel, логичнее использовать надстройку для Excel, чтобы не совершать лишних движений и не переходить из одного приложения в другое. Узнать больше об использовании надстроек для Excel.

Другие материалы по теме:

как сделать в word автозаполнение MS Word — Сокращение времени подготовки документов.

6 лет назад

MS Word: Сокращение времени подготовки документов посредством использования закладок и перекрестных ссылок,…

как сделать в word автозаполнение Заполнение документов Word данными из Excel. Слияние Word

11 меc назад

Описание способа заполнения множества однотипных документов Word данными из таблицы Excel, на примере создания…

как сделать в word автозаполнение как … сделать поля ввода в Word

3 лет назад

как сделать шаблон документа в ворд, электронные бланки.

как сделать в word автозаполнение Слияние Excel и Word

5 лет назад

КАК добавить данные из EXCEL в WORD методом Слияния. В Word’е есть такая замечательная вкладка (на ленте) — называет…

как сделать в word автозаполнение Создание автоматического содержания в MS Word 2010

8 лет назад

Создание автоматического содержания (оглавления) в MS Word 2010 Внимание! Тестовый вариант видео. Вскоре будет…

как сделать в word автозаполнение Поля и элементы управления в документах Word (часть 1)

2 лет назад

Наш сегодняшний бесплатный урок Word для начинающих посвящен работе с текстовыми полями, флажками, списками….

как сделать в word автозаполнение Как сделать оглавление в Microsoft Word

5 лет назад

Как сделать оглавление в Microsoft Word Помощь проекту, яндекс кошелёчек : 4100187251.

как сделать в word автозаполнение Как сделать форму документа в Word?

7 лет назад

Инструкция, как переделать документ в Word. Сделать форму документа, удобную для заполнения. Иногда фирмы…

как сделать в word автозаполнение Автозамена в Word

4 лет назад

Автозамена в Word — это отличный элемент работы с текстом в Word, который позволяет быстро и тщательно заменять…

как сделать в word автозаполнение Как запретить изменение текста в документе Word

7 меc назад

Предположим, у вас имеется документ Word, который вы хотите защитить от случайных изменений другими пользова…

как сделать в word автозаполнение Автозаполнение форм в Google Chrome — настройка для удобной работы

2 лет назад

Как настроит автозаполнение форм в Google Chrome и убрать всё лишнее? Давайте работать удобно. «Город Копирайтин…

как сделать в word автозаполнение Оформление договора в MS Word (адреса сторон) с помощью невидимых таблиц.

7 лет назад

Видеоурок проекта Античайник. Сергея Авраменко MS Word, как правильно оформить договор в программе…

как сделать в word автозаполнение Генерация документов по шаблону

5 лет назад

Cоздание офисных документов формата Word, Excel, RTF, HTML по шаблонам на основе информации, имеющейся в базе данных…

как сделать в word автозаполнение Быстрые переходы по документу Word с помощью гиперссылок

2 лет назад

С помощью гиперссылок документа Word можно выполнять быстрые переходы между его разделами, наподобие, как…

как сделать в word автозаполнение Шаблоны и слияние документов в текстовом редакторе MS Word 2007 (видеоурок 9)

3 лет назад

Шаблоны и слияние документов в текстовом редакторе MS Word 2007 (видеоурок 9) — создание шаблонов документов,…

как сделать в word автозаполнение Word для начинающих. Урок 35: Серия однотипных документов методом слияния

3 лет назад

Как сделать любое количество однотипных документов, у которых меняются только некоторые участки текста?…

как сделать в word автозаполнение Как создать шаблон фирменного бланка в Word. Часть 1: Колонтитулы и шаблоны в Ворде.

1 лет назад

Это один из приемов автоматизации работы с типовыми документами в Word -е. Часть 1 — показано быстрое создание…

как сделать в word автозаполнение Связывание данных таблиц Excel и документов Word

3 лет назад

Решая различные офисные задачи, мы сохраняем данные либо в электронных таблицах Excel, либо в текстовом редак…

как сделать в word автозаполнение Word и Excel Office 2007 29 Excel Ввод данных автозаполнение

5 лет назад

Как создать анкету в Word

2 лет назад

Создавайте собственные бланки анкет, опросников и других вариантов форм. Не повторяйте распространенных…

Создание шаблона на примере трудового договора

6 лет назад

Рассмотрен простейший способ создания шаблона для использования в программе Арфа, на основе заполненного…

Функциональные возможности текстового редактора Word от компании Microsoft настолько широки, что многие пользователи даже не подозревают о большинстве из них и поэтому пытаются выполнять вручную те задачи, которые быстро и качественно решаются автоматически, встроенными в программу алгоритмами. Одним из примеров таких задач является создание содержания в многостраничном документе. Если вы все еще пытаетесь создавать его руками, набирая заголовки, выписывая относящиеся к ним номера страниц, мучаясь с заполнителями и последующим форматированием всего этого, то данная статья поможет избавиться от всего этого, научив вас создавать содержание в Ворде в автоматическом режиме.

Как в Ворде сделать содержание автоматически Содержание создается в Ворде уже после того как будет завершен набор и верстка всего текста. Пошагово весь процесс будет выглядеть следующим образом:

  1. Перед созданием содержания страницы в вашем документе должны быть уже пронумерованы. Это обязательное условие. Если по каким-то причинам вы еще не сделали этого, то сделайте нумерацию сейчас.
  2. Далее необходимо указать текстовому редактору какие части текста в вашем документе будут являться заголовками разделов, подразделов, параграфов и так далее. Выполняется это с помощью назначения соответствующих стилей. Выделите первый заголовок раздела документа и примените к нему стиль Заголовок 1. Аналогичные действия проделайте для остальных заголовков разделов.

    назначение стиля заголовкам

  3. Если в документе присутствуют подразделы, то выделите название каждого из них в тексте и присвойте им стиль Заголовок 2. Для параграфов внутри подразделов назначьте стиль Заголовок 3. Общий смысл данных действий будет заключаться в том, чтобы спускаясь по старшинству заголовков от самого главного и далее ниже, присваивать им стили с возрастанием номеров Заголовок 1, Заголовок 2, Заголовок 3 и так далее.

    назначение стиля подзаголовкам

  4. Вы можете всегда изменить формат отображения заголовков в документе в соответствие с нормативными требованиями, назначив ему другой размер шрифта, иное форматирование, применив другое выделение и так далее. Для этого раскройте список стилей, используемых в документе, нажмите справа от выбранного стиля заголовка на значок ¶a и в появившемся меню нажмите на строку Изменить…. После изменения стиля у вас автоматически поменяются все заголовки соответствующего стиля во всем документе. Вам не нужно будет править каждый заголовок руками, что само по себе очень удобно.

    изменение оформления заголовков в тексте

  5. После назначения соответствующих стилей заголовкам можно приступать к созданию содержания. Для этого в Ворде существует специальная функция, которая называется Оглавление. Перед тем как ее вызвать установите курсор в то место, где у вас в документе будет начинаться содержание. Чтобы вызвать функцию перейдите в главном меню на вкладку Ссылки и далее нажмите на кнопку функции Оглавление.
  6. В открывшемся окне выберите формат оглавления из предлагаемых шаблонных вариантов и нажмите кнопку Ок. В результате данного действия у вас появится содержание вашего документа с автоматически проставленной нумерацией страниц и безупречным форматированием.

    создание оглавления

  7. Если стандартные шаблоны содержания не подходят под требования к вашему документу, то вы можете настроить стиль оформления содержания по собственному желанию. Для этого удалите созданное только что содержание, снова вызовите инструмент Оглавление, но вместо нажатия кнопки Ок нажмите Изменить… Откроется окно настройки стиля, в котором вы, выделяя соответствующий заголовок, и нажав теперь уже в другом окне кнопку Изменить можете выбрать шрифт заголовка, его размер, интервалы, выравнивание и многое другое, что доступно для обычных текстов в редакторе Word. Данные изменения не будут касаться оформление заголовков в тексте, а только определят их вид в содержании.

    настройка оформления оглавления

  8. После того как будет настроен стиль каждого заголовка в содержании вам останется только вернуться в главное окно создания оглавлений и нажать кнопку Ок для завершения работы по созданию автоматического содержания.
    В заключении статьи необходимо сказать об одном важном нюансе в создании содержания в Ворде. Заключается он в том, что Ворд не всегда или не сразу после изменения количества страниц в документе производит автозамену нумерации в уже созданном содержании. Это означает то, что если содержание у вас находится перед основным текстом, а не в его конце, то номера страниц в содержании могут сбиться на то количество страниц, которое будет занимать само оглавление.

Выход из данной ситуации очень прост. Вам необходимо создать содержание в начале документа, посмотреть сколько страниц оно занимает, удалить содержание, добавить соответствующее количество пустых страниц, равное количеству страниц, занимаемому содержанию. Это гарантирует то, что нумерация страниц будет правильно расставлена в созданном впоследствии содержании. После этого создаете содержание и удаляете пустое пространство между ним и последующим текстом.

Именно таким образом создается автоматическое содержание в Ворде в версии текстового редактора Word 2007. В других версиях программы оглавление создается аналогичным образом. Может незначительно только отличаться внешний вид интерфейса.

В MS Word можно выполнять различные задачи, и далеко не всегда работа в этой программе ограничивается банальным набором или редактированием текста. Так, выполняя в Ворде научно-техническую работу, набирая реферат, диплом или курсовую, делая и оформляя доклад, сложно обойтись без того, что принято называть расчетно-пояснительной запиской (РПЗ). Сама же РПЗ обязательно должна включать оглавления (содержание).

Зачастую, студенты, как и работники тех или иных организаций, сначала оформляют основной текст расчетно-пояснительной записки, добавляя в него основные разделы, подразделы, графическое сопровождение и многое другое. Закончив эту работу, они переходят непосредственно к оформлению содержания созданного проекта. Пользователи, не знающие всех возможностей Microsoft Word, для таких целей начинают выписывать в столбик поочередно названия каждого из разделов, указывают соответствующие им страницы, перепроверяют то, что получилось в результате, нередко что-то корректируя по ходу, и только потом отдают готовый документ преподавателю или начальнику.

Такой подход к оформлению содержания в Ворде хорошо работает лишь с документами небольшого объема, коими могут быть лабораторные или типовые расчеты. Если же документ — это курсовая или дипломная работа, научная диссертация и тому подобное, то соответствующий ему РПЗ будет состоять из нескольких десятков основных разделов и еще большего количества подразделов. Следовательно, оформление содержания столь объемного файла вручную займет довольно много времени, параллельно затратив нервы и силы. Благо, сделать содержание в Word можно и автоматически.

Создание автоматического содержания (оглавления) в Ворде

Самое верное решение — начинать создание любого обширного, большого по объему документа именно с создания содержания. Даже в случае, если у вас еще не написано ни одной строчки текста, потратив всего 5 минут на предварительную настройку MS Word, вы сэкономите себе значительно больше времени и нервов в дальнейшем, направив все усилия и старания исключительно на работу.

1. Открыв Ворд, перейдите на вкладку «Ссылки», расположенную на панели инструментов вверху.

2. Кликните на пункт «Оглавление» (первый слева) и создайте «Автособираемое оглавление».

3. Перед вами появится сообщение о том, что элементы оглавления отсутствуют, что, собственно, не удивительно, ведь вы открыли пустой файл.

Примечание: Дальнейшую «разметку» содержания вы можете делать по ходу набора текста (что более удобно) или по завершению работы (займет заметно больше времени).

Первый автоматический пункт содержания (пустой), который перед вами появился — это и есть ключевое оглавление, под шапкой которого и будут собираться все остальные пункты работы. Желая добавить новый заголовок или подзаголовок, просто установите курсор мышки на нужном месте и кликните по пункту «Добавить текст», расположенному на верхней панели.

Примечание: Вполне логично, что вы можете создавать не только заголовки меньшего уровня, но и основные. Кликните по месту, где вы хотите его разместить, разверните пункт «Добавить текст» на панели управления и выберите «Уровень 1»

Выберете желаемый уровень заголовка: чем больше цифра, тем «глубже» будет этот заголовок.

Чтобы просмотреть содержание документа, а также для быстрой навигации по его содержанию (созданному вами), необходимо перейти во вкладку «Вид» и выбрать режим отображение «Структура».

Весь ваш документ разбит на пункты (заголовки, подзаголовки, текст), каждый из которых имеет свой уровень, предварительно указываемый вами. Отсюда между этими пунктами можно быстро и удобно переключаться.

В начале каждого заголовка есть небольшой синий треугольничек, кликнув по которому, вы можете скрыть (свернуть) весь текст, который относится к этому заголовку.

По ходу написания вами текста созданное в самом начале «Автособираемое оглавление» будет изменяться. В нем будут отображаться не только создаваемые вами заголовки и подзаголовки, но и номера страниц, на которых они начинаются, уровень заголовка тоже будет отображаться визуально.

Это и есть столь необходимое для каждой объемной работы автосодержание, сделать которое в Ворде очень просто. Именно содержание будет находится в начале вашего документа, как это и требуется для РПЗ.

Автоматически сформированное оглавление (содержание) всегда хорошо выровнено и корректно отформатировано. Собственно, внешний вид заголовков, подзаголовков, как и всего текста всегда можно изменить. Делается это точно так же, как с размером и шрифтом любого другого текста в MS Word.

По ходу выполнения работы автоматическое содержание будет дополняться и расширяться, в нем будут проставляться новые заголовки и номера страниц, а из раздела «Структура» вы всегда сможете получить доступ к необходимой части своей работы, обратиться к нужной главе, вместо того, чтобы пролистывать документ вручную. Стоит отметить, что особенно удобной работа с документом с автосодержанием становится после его экспорта в PDF-файл.

Урок: Как конвертировать PDF в Word

На этом все, теперь вы знаете, как создать автоматическое содержание в Ворде. Стоит отметить, что данная инструкция применима ко всем версиям продукта от Майкрософт, то есть, таким образом можно сделать автоматическое оглавление в ворде 2003, 2007, 2010, 2013, 2016 и любых других версиях этого компонента офисного пакета. Теперь вы знаете немного больше и сможете работать более продуктивно.

Мы рады, что смогли помочь Вам в решении проблемы.

Задайте свой вопрос в комментариях, подробно расписав суть проблемы. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

Да Нет

Как в Ворде сделать содержание автоматически

В MS Word можно выполнять различные задачи, и далеко не всегда работа в этой программе ограничивается банальным набором или редактированием текста. Так, выполняя в Ворде научно-техническую работу, набирая реферат, диплом или курсовую, делая и оформляя доклад, сложно обойтись без того, что принято называть расчетно-пояснительной запиской (РПЗ). Сама же РПЗ обязательно должна включать оглавления (содержание).

Зачастую, студенты, как и работники тех или иных организаций, сначала оформляют основной текст расчетно-пояснительной записки, добавляя в него основные разделы, подразделы, графическое сопровождение и многое другое. Закончив эту работу, они переходят непосредственно к оформлению содержания созданного проекта. Пользователи, не знающие всех возможностей Microsoft Word, для таких целей начинают выписывать в столбик поочередно названия каждого из разделов, указывают соответствующие им страницы, перепроверяют то, что получилось в результате, нередко что-то корректируя по ходу, и только потом отдают готовый документ преподавателю или начальнику.

Такой подход к оформлению содержания в Ворде хорошо работает лишь с документами небольшого объема, коими могут быть лабораторные или типовые расчеты. Если же документ — это курсовая или дипломная работа, научная диссертация и тому подобное, то соответствующий ему РПЗ будет состоять из нескольких десятков основных разделов и еще большего количества подразделов. Следовательно, оформление содержания столь объемного файла вручную займет довольно много времени, параллельно затратив нервы и силы. Благо, сделать содержание в Word можно и автоматически.

Создание автоматического содержания (оглавления) в Ворде

Самое верное решение — начинать создание любого обширного, большого по объему документа именно с создания содержания. Даже в случае, если у вас еще не написано ни одной строчки текста, потратив всего 5 минут на предварительную настройку MS Word, вы сэкономите себе значительно больше времени и нервов в дальнейшем, направив все усилия и старания исключительно на работу.

1. Открыв Ворд, перейдите на вкладку «Ссылки», расположенную на панели инструментов вверху.

Вкладка Ссылки в Word

2. Кликните на пункт «Оглавление» (первый слева) и создайте «Автособираемое оглавление».

Оглавление в Word

3. Перед вами появится сообщение о том, что элементы оглавления отсутствуют, что, собственно, не удивительно, ведь вы открыли пустой файл.

Пустое оглавление в Word

Примечание: Дальнейшую «разметку» содержания вы можете делать по ходу набора текста (что более удобно) или по завершению работы (займет заметно больше времени).

Первый автоматический пункт содержания (пустой), который перед вами появился — это и есть ключевое оглавление, под шапкой которого и будут собираться все остальные пункты работы. Желая добавить новый заголовок или подзаголовок, просто установите курсор мышки на нужном месте и кликните по пункту «Добавить текст», расположенному на верхней панели.

Добавить текст в Word

Примечание: Вполне логично, что вы можете создавать не только заголовки меньшего уровня, но и основные. Кликните по месту, где вы хотите его разместить, разверните пункт «Добавить текст» на панели управления и выберите «Уровень 1»

Lumpics.ru

Заголовки и подзаголовки в Word

Выберете желаемый уровень заголовка: чем больше цифра, тем «глубже» будет этот заголовок.

Чтобы просмотреть содержание документа, а также для быстрой навигации по его содержанию (созданному вами), необходимо перейти во вкладку «Вид» и выбрать режим отображение «Структура».

Вид Структура в Word

Весь ваш документ разбит на пункты (заголовки, подзаголовки, текст), каждый из которых имеет свой уровень, предварительно указываемый вами. Отсюда между этими пунктами можно быстро и удобно переключаться.

Заголовки, подзаголовки в Word

В начале каждого заголовка есть небольшой синий треугольничек, кликнув по которому, вы можете скрыть (свернуть) весь текст, который относится к этому заголовку.

Скрыть текст в Word

По ходу написания вами текста созданное в самом начале «Автособираемое оглавление» будет изменяться. В нем будут отображаться не только создаваемые вами заголовки и подзаголовки, но и номера страниц, на которых они начинаются, уровень заголовка тоже будет отображаться визуально.

Автосодержание в Word

Это и есть столь необходимое для каждой объемной работы автосодержание, сделать которое в Ворде очень просто. Именно содержание будет находиться в начале вашего документа, как это и требуется для РПЗ.

Автоматически сформированное оглавление (содержание) всегда хорошо выровнено и корректно отформатировано. Собственно, внешний вид заголовков, подзаголовков, как и всего текста всегда можно изменить. Делается это точно так же, как с размером и шрифтом любого другого текста в MS Word.

Содержание в структуре в Word

По ходу выполнения работы автоматическое содержание будет дополняться и расширяться, в нем будут проставляться новые заголовки и номера страниц, а из раздела «Структура» вы всегда сможете получить доступ к необходимой части своей работы, обратиться к нужной главе, вместо того, чтобы пролистывать документ вручную. Стоит отметить, что особенно удобной работа с документом с автосодержанием становится после его экспорта в PDF-файл.

Урок: Как конвертировать PDF в Word

На этом все, теперь вы знаете, как создать автоматическое содержание в Ворде. Стоит отметить, что данная инструкция применима ко всем версиям продукта от Майкрософт, то есть, таким образом можно сделать автоматическое оглавление в ворде 2003, 2007, 2010, 2013, 2016 и любых других версиях этого компонента офисного пакета. Теперь вы знаете немного больше и сможете работать более продуктивно.

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Автоматизация работы в excel на python
  • Автоматизация ввода данных в таблицах excel
  • Автоматизация работ в ms word
  • Автоматизация ввода данных в word
  • Автоматизация при помощи excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии