Всем привет. Написал отдельный модуль (класс), вроде работает. Прикладываю в спойлер.
Ну и пример использования. Если кто найдет ошибку, с радостью приму комментарии
Код |
---|
Set act = New WordGenerator With act .template_add "courtиск.docx" 'Добавили шаблон в папке templates проекта .template_add "С:претензия.docx" 'добавили шаблон абсолютного пути .dialog = True 'И этого нам мало, мы спрашиваем юзера, чтобы тоже указал шаблоны .multiselect = True 'да и пусть еще мог бы выбрать сразу несколько в диалоговом окне .closeafter = True 'Юзер не хочет редактировать готовый файл, закрываем его .marker = "Иванов 2017" 'а это припишется к каждому создаваемому файлу .SetSaveFolder = "Все по Иванову" 'а это папка, куда будет складываться все с этого объекта .pair_add "ФИО", "Иванов Иван Иванович" 'парочка пар на замену, можно и сотню .pair_add "[должность]", "директор" .Start 'запускаем процесс, смотрим как открываются ворд файлики, 'производятся замены. сохраняется и закрывается, результат ищем в папках End With |
Скрытый текст |
---|
- Категория: Excel
- Опубликовано: 18 июня 2020
- Просмотров: 12552
Исходный код из видео
Sub main() Dim wdApp As Object Dim wdDoc As Object HomeDir$ = ThisWorkbook.Path Set wdApp = CreateObject("Word.Application") i% = 2 Do If Cells(i%, 1).Value = "" Then Exit Do If Cells(i%, 1).Value <> "" Then NPP$ = Cells(i%, 1).Text ID$ = Cells(i%, 2).Text Adress$ = Cells(i%, 3).Text SN$ = Cells(i%, 4).Text DataC$ = Date FileCopy HomeDir$ + "template.doc", HomeDir$ + "" + NPP$ + "_" + ID$ + "_" + DataC$ + ".doc" Set wdDoc = wdApp.Documents.Open(HomeDir$ + "" + NPP$ + "_" + ID$ + "_" + DataC$ + ".doc") wdDoc.Range.Find.Execute FindText:="&date", ReplaceWith:=DataC$ wdDoc.Range.Find.Execute FindText:="&id", ReplaceWith:=ID$ wdDoc.Range.Find.Execute FindText:="&adress", ReplaceWith:=Adress$ wdDoc.Range.Find.Execute FindText:="&sn", ReplaceWith:=SN$ wdDoc.Save wdDoc.Close End If i% = i% + 1 Loop wdApp.Quit MsgBox "Готово!" End Sub
Исходный код из видео — скачать архив с файлами
ZIP архив с файлами
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
В предыдущих статьях цикла «Автоматизация заполнения документов» я рассказал о том, как сформировать пользовательский интерфейс приложения, организовать проверку вводимых данных и получить число прописью без использования кода VBA. В этой, заключительной статье речь пойдет о волшебстве — переносе всех необходимых значений из рабочей книги Excel в документ Word. Давайте я покажу Вам то, что должно получиться в итоге:
Описание механизма
Для начала в общих чертах опишу, каким именно образом будет происходить перенос данных в документ Word. Прежде всего, нам понадобится шаблон документа Word, содержащий всю разметку, таблицы и ту часть текста, которая будет оставаться неизменной. В этом шаблоне необходимо определить места, в которые будут подставлены значения из рабочей книги Excel, — удобнее всего это сделать с помощью закладок. После этого необходимо упорядочить данные Excel таким образом, чтобы обеспечить соответствие шаблону Word, ну и в последнюю очередь — написать саму процедуру переноса на VBA.
Итак, обо всем по порядку.
Создание шаблона документа Word
Тут все предельно просто — создаем обычный документ, набираем и форматируем текст, в общем, добиваемся того, чтобы получить необходимую форму. В тех местах, куда необходимо будет подставить значения из Excel нужно создать закладки. Это делается следующим образом:
- Для удобства поддержки напечатать в нужном месте название закладки. Я еще и заключил названия в угловые скобки, так что получилось, например, вот так:
<DocumentDate>
для закладки, содержащей дату документа. - Выделить все название закладки (в моем случае вместе с угловыми скобками), перейти на вкладку «Вставка» и нажать кнопку «Закладка»:
Расположение кнопки «Вставить закладку»
- В появившемся диалоговом окне задать для закладки имя (у меня оно совпадает с тем, что написано в угловых скобках) и нажать ОК
Таким образом нужно будет создать все закладки, то есть отметить все места, куда будут вставлены данные из Excel. Получившийся файл нужно сохранить как «Шаблон MS Word» с помощью пункта меню «Файл» -> «Сохранить как…».
Подготовка данных Excel
Я решил для удобства поместить все данные, которые необходимо перенести в документ Word, на отдельном рабочем листе с названием Bookmarks
— закладки. На этом листе два столбца: в первом содержатся названия закладок (в точности так, как они названы в документе Word), а во втором — соответствующие значения, подлежащие переносу.
Часть этих значений получена напрямую из листа ввода данных, а часть — из вспомогательных таблиц, расположенных на листе Support
. В этой статье я не буду разбирать формулы, рассчитывающие нужные значения, если что-то будет непонятно — задавайте вопросы в комментариях.
На этом этапе важно правильно указать все названия закладок — от этого зависит правильность переноса данных.
Процедура переноса
А вот это — самое интересное. Существует два варианта выполнения кода переноса данных:
- Код выполняется в рабочей книге Excel, данные передаются в Word по одному значению за раз и сразу же размещаются в документе.
- Код выполняется в отдельном документе Word, все данные передаются из Excel одним пакетом.
С точки зрения скорости выполнения, особенно при большом количестве закладок, второй вариант выглядит гораздо привлекательнее, однако требует более сложных действий. Именно его я и использовал.
Вот, что необходимо сделать:
- Создать шаблон документа Word с поддержкой макросов. В этом шаблоне будет содержаться выполняемый код на VBA.
Почему нужно создать именно шаблон? Таким образом можно защитить программный код от неумышленного изменения. Дело в том, что каждый раз при открытии шаблона создается новый файл Word, сохранить который поверх существующего шаблона просто так не получится. Сам шаблон при этом остается неизменным.
- В созданный шаблон необходимо поместить программу, написанную на VBA. Для этого необходимо при редактировании шаблона нажать комбинацию клавиш Alt+F11 и ввести в открывшемся окне редактора Visual Basic код программы.
- В рабочей книге Excel написать код, вызывающий процедуру заполнения из только что созданного шаблона Word.
Текст процедуры я приводить в статье не буду — его можно легко посмотреть в файлеFillDocument.dotm
, расположенном в папке Template в архиве с примером.
Как же воспользоваться всем этим для решения именно Вашей задачи?
Понимаю, что на словах это все выглядит очень просто, но что же получается на деле? Я предлагаю Вам просто воспользоваться уже готовым вариантом. Скачайте архив с примером, в рабочей книге Excel нажмите комбинацию клавиш Alt+F11, чтобы открыть редактор Visual Basic и прочитайте все мои комментарии к программе. Для того, чтобы изменить программу под свои нужды Вам понадобится всего лишь изменить значение нескольких констант, они вынесены в самое начало программы. Весь текст программы Вы можете свободно скопировать в свой проект.
Структура архива
В архиве, приложенном к этой статье, содержится несколько файлов.
Основной файл — рабочая книга Excel с названием «Создание подтверждений». В этой рабочей книге 4 рабочих листа, из которых отображаются только два: «Input» — лист ввода данных и «Database» — архив всех введенных документов.
В папке Templates находятся шаблоны документов Word. Один из них — шаблон, содержащий программу заполнения закладок, а второй — форма для заполнения. Вы можете использовать без изменений шаблон с программой, но форму для заполнения, естественно, придется переделать в соответствии с Вашими нуждами.
Как переработать пример «под себя»?
Я рекомендую придерживаться следующей последовательности действий:
- Подготовить шаблон документа Word, который необходимо заполнить. Создать в нем все необходимые закладки и сохранить как «шаблон MS Word».
- Скопировать в папку с подготовленным шаблоном файл
FillDocument.dotm
из архива, приложенного к этой статье. Этот файл отвечает за заполнение закладок шаблона, и в нем ничего менять не нужно. - Подготовить рабочую книгу Excel для ввода данных. Вам решать, будет ли она обладать каким-либо «продвинутым» пользовательским интерфейсом и осуществлять разные хитрые расчеты. Главное, чтобы в ней содержался рабочий лист с таблицей соответствия имени закладки в шаблоне Word и значения, которое нужно подставить.
- Вставить в подготовленную рабочую книгу код программы на VBA из файла-примера. Заменить все константы в соответствии с Вашим проектом.
- Протестировать правильность работы.
- Активно пользоваться!
Вместо заключения
Статья, если честно, получилась какой-то путаной и, наверное, не очень понятной, поэтому я жду Ваших вопросов по поводу работы кода, формул или механизма в целом в комментариях к ней.
Другие статьи из цикла:
- Общие требования к приложению
- Разработка пользовательского интерфейса
- Получение числа прописью.
Скачать файл с архивом приложения
По этой ссылке Вы перейдете на сайт Microsoft SkyDrive, где Вам будет предложено скачать файл Confirm.rar — это и есть архив приложения.
03. Данный пример показывает как можно быстро создать документ Word из Microsoft Access, используя шаблон *.dot. Для разметки документа используются специальные закладки.
'============================================================== ' Создание документа Word по шаблону ' • Для этого Вы должны создать в Word шаблон la_automat.dot ' и поставить в нем Закладки, имеющие такие же имена как в форме. ' Например, Вставка - Закладка ... - Имя закладки=Фирма ' (Нажмите кнопку Добавить и сохраните шаблон) ' Private Sub butNewWord_Click() Dim app As Word.Application 'Приложение программы Dim strDOC As String ' Имя документа Dim strDOT As String ' Имя шаблона Dim ctl As Control ' Управляющие элементы в форме Dim s As String ' Вспомогательная строка On Error GoTo 999 ' Определяем имена шаблона и документа Word With Application.CurrentProject strDOT = .Path "" "la_automat.dot" strDOC = .Path "" "la_automat.doc" End With ' Управление документом Word Set app = New Word.Application 'Новое приложение Word app.Visible = True 'Отображаем документ app.Documents.Add strDOT 'Добавляем шаблон With app.ActiveDocument 'Выбираем активный документ On Error Resume Next ' Отключаем ошибки ' Просматриваем все элементы формы, если ' такой закладки нет, то очищаем поток от ошибки For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then s = ctl.Name ' Определяем название элемента .Bookmarks.Item(s).Range.Text = Me(s) 'Устанавливаем текст Err.Clear ' Очищаем поток от ошибки при отсутствии элемента End If Next ctl .SaveAs strDOC ' Сохраняем файл On Error GoTo 999 ' Включаем обработку ошибки End With ' app.Quit 'Закрываем приложение Exit Sub 999: MsgBox Err.Description 'Ошибка Err.Clear app.Quit End Sub
Создание шаблонов
Процедура создания
шаблона аналогична процедуре создания
нового документа. Для создания шаблона
выполните следующие действия:
-
Выберите
команду Файл |
Создать. -
В
области задач Создание документавыберите командуОбщие шаблоныв
разделеСоздание с помощью шаблона. -
В
диалоговом окне Шаблоныустановите
переключательшаблонв разделеСоздать. -
В
диалоговом окне Шаблонывыберите
один из существующих шаблонов в качестве
основы для создания нового и нажмитеОК. -
Введите
текст и рисунки, отредактируйте и
отформатируйте шаблон теми же методами,
что и при создании документа. В шаблоне
можно определить параметры страницы
(поля, размер бумаги и т.д.), стили. Можно
ввести также элементы автотекста,
настройки меню и панелей инструментов,
определение сочетаний клавиш, макросы
(убедитесь, что эти элементы будут
сохранены в создаваемом шаблоне, а не
в шаблоне Normal.dot). -
Выберите
команду Файл | Сохранитьили
нажмите кнопкуСохранитьна панели
инструментов. Когда шаблон сохраняется
в первый раз, Word автоматически предлагает
для сохранения шаблона текущую папкуШаблоны, однако вы можете сохранить
свой шаблон и в любой другой папке.
Примечание.
Можно создать шаблон на основе
существующего документа. Для этого
выберите командуВыбор документав разделеСоздание из имеющегося
документа. В открывшемся диалоговом
окнеСоздание из имеющегося документавыберите подходящий для создания шаблона
документ и нажмите кнопкуСоздать
новый. При первом после редактирования
сохранении нового документа убедитесь,
что в раскрывающемся спискеТип файлавыбран элементШаблон документа
(*.dot).
Макросы
Если какая-либо
задача часто выполняется в Microsoft Word, ее
выполнение можно автоматизировать с
помощью макроса. Макрос– это
набор команд и инструкций, выполняемых
как одна команда. Макросы используются
для
следующих целей: для ускорения
часто выполняемых операций редактирования
или форматирования; для объединения
нескольких команд (например, для вставки
таблицы с указанными размерами и
границами и определенным числом строк
и столбцов); для упрощения доступа к
параметрам в диалоговых окнах, для
автоматизации обработки сложных
последовательных действий в задачах.
Для создания
макроса в Microsoft Word существует два метода:
-
использование
средства для записи макросов; -
прямое
программирование в редакторе Visual
Basic.
Запись макросов
В Microsoft Word средство
записи макросов работает как магнитофон.
С его помощью записываются нажатия
клавиш и кнопок мыши, которые переводятся
макросом в код Microsoft Visual Basic для приложений.
При записи нового
макроса допускается применение мыши
только для выбора команд и параметров
(в меню, на панели инструментов).
Для записи такого
действия, как выделение текста, необходимо
использовать клавиатуру. Например, с
помощью клавиши F8 можно выделить текст,
а с помощью клавиши END – переместить
курсор в конец строки.
Макросы могут
хранится в шаблонах и документах. По
умолчанию, макросы хранятся в шаблоне
Normal.dot, чтобы они были доступны всем
документам Word. Если макрос будет
использоваться только в одном документе,
сохраните его в документе.
Отдельные макросы
в документе хранятся в проектах макросов,
которые можно копировать из одного
документа в другой. Для записи макроса:
-
Продумайте
последовательность действий, которые
войдут в макрос. -
Выберите
команду Макросв менюСервис,
а затем – командуНачать запись.
-
В
поле Имя макросавведите имя нового
макроса. -
Выберите
в поле Макросдоступен дляшаблон или документ, в котором будет
храниться макрос. -
При
желании введите краткое описание
макроса в поле Описание.
Советы по записи
макросов
Перед записью
макроса запланируйте заранее шаги и
команды, которые он должен выполнить.
Если при записи
будет допущена ошибка, то в макросе
также запишутся все исправления. Ненужные
инструкции можно будет убрать позже
путем редактирования макроса.
Перед использованием
макроса, записанного в другом документе,
убедитесь, что он не зависит от содержимого
этого документа.
Если некоторый
макрос используется особенно часто,
назначьте ему кнопку панели инструментов,
команду меню или сочетание клавиш. Это
позволит быстро вызывать макрос без
открытия диалогового окна Макросы.
Постарайтесь
предусмотреть все сообщения Microsoft Word,
которые могут приостановить действие
макроса. Например: если макрос вызывает
команду Найти или Заменить(менюПравка), нажмите кнопкуБольшена вкладкеНайти или Заменить, а
затем выберите параметрВездев
спискеНаправление. Если макрос
выполняет поиск только вперед или назад,
то по достижении конца или начала
документа Word приостановит выполнение
макроса и предложит продолжить поиск
в оставшейся части документа.
Соседние файлы в папке Лекции инф
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #