Приходилось ли вам выполнять при форматировании документа несколько раз повторять одни и те же команды? Предположим, в документе 50 таблиц. И каждую надо привести в порядок. Повторяющиеся заголовки, выравнивание назначить, да мало ли чего ещё сделать. И вот раз за разом повторяются одни те же команды. Так что знакомимся с понятием МАКРОС В ТАБЛИЦЕ.
В офисных программах есть замечательная возможность: объединить несколько команд в одну макрокоманду. Макрокоманда – это последовательность команд, которые будут работать автоматически при запуске макроса.
Вот определение, которое я взяла с любимого ресурса https://dic.academic.ru/dic.nsf/ruwiki/15081:
В «офисных» продуктах (OpenOffice.org, Microsoft Office и др.), в графических программах (например, CorelDRAW) при обработке макроса автоматически выполняется заданная для каждого макроса последовательность действий — нажатия на клавиши, выбор пунктов меню и т. д.
Я приложила к уроку документ с несколькими таблицами (скачать файл тут). Я удалила текст документа (всё-таки авторское право и всё такое…):
По окончании урока вы сможете:
- Составить алгоритм форматирования таблицы
- Настроить ленту «Разработчик»
- Записать макрос форматирования таблицы
- Проверить макрос в действии
- Добавить кнопку «Макрос» на панель быстрого доступа
1. Алгоритм форматирования
таблицы
Прежде, чем приступить к созданию макроса, следует тщательно продумать, какие команды нам понадобятся. Начнём с верха таблицы
- Заголовок, повторяющийся при переходе таблицы на следующую страницу
- Выравнивание содержимого ячеек заголовков по центру и по середине
- Заливка строки заголовка цветом
- Текст заголовка таблицы полужирного начертания красного цвета
- Поля ячеек – 0,05
- Видимые границы для всей таблицы красного цвета
- Автоподбор по ширине окна (вдруг таблица меньше ширины печатного поля)
Почему такая последовательность? При написании макрокоманды есть одна особенность:
Понять и запомнить! |
Ни в коем случае нельзя щелкать ЛМ по области документа! Работать только с лентами! |
Так вот, после выделения заголовка можно выделить всю таблицу командой с ленты, а наоборот – нельзя!
Итак, нам надо записать семь команд одной макрокомандой. По ходу дела команд может оказаться больше.
Для того, чтобы записать макрос, необходимо найти эту команду. Команда «Запись макроса» находится на ленте «Разработчик», которая в настоящий момент не видна.
2. Настройка ленты
«Разработчик»
Шаг 1. Выходим в режим настраивания ленты (ПМ в любом месте любой ленты → команда Настроить ленту из контекстного меню):
Шаг 1. Отметим галочкой ленту «Разработчик»[1]
ОК!
Вообще-то команда «Запись
макроса» есть на ленте «Вид»:
Но на ленте «Разработчик» есть много других команд, которыми я активно пользуюсь, например, создание форм и полей, поэтому эта лента присутствует у меня в обязательном порядке.
3. Макрос для таблицы. Запись макроса для форматирования таблицы
Шаг 1. Выделяем заголовок таблицы (щелкаем ЛМ
на полосе выделения напротив заголовка таблицы):
Шаг 2. Запускаем запись макроса (лента
Разработчик → группа команд Код → команда Запись макроса):
- Можно ввести имя макроса, но имейте в виду, что пробелы недопустимы, то
есть имя макроса будет выглядеть так – «Форматирование таблицы».
- Назначить выполнение макроса от нажатия единственной кнопке. Но кнопка должна быть уникальная (никогда не пользуюсь).
- Ввести описание макроса. Здесь никаких ограничений. Конечно, если макрос единственный, то можно и обойтись без описания. Я часто использую макросы, поэтому без описания просто не обойтись.
- Назначить выполнение макроса от нажатия сочетания функциональной клавиши плюс любой клавиши. Но при этом недопустимо использовать устойчивые системные сочетания, например, Ctrl+X, так как это сочетание зарезервировано для команды «Вырезать в буфер обмена».
- Из этого выпадающего меню выбираем доступность макроса для определенного документа. Если выбираем Normal.dotm, то наш макрос будет доступен для всех документов, созданных на основе шаблона Normal.dotm. Если мы создали документ на основе другого пользовательского шаблона, то в списке появится имя этого пользовательского шаблона, и тогда все документы на основе этого шаблона будут иметь внедрённый макрос. Но это действительно только для шаблонов, которые имеются на нашем компьютере.
Шаг 3. Назначаем сочетание клавиш (например,
Ctrl+1):
Нажимаем клавиши «Назначить» и «Закрыть» и знакомимся с новым видом курсора:
Шаг 4. Назначаем режим «Повторить строки
заголовков» (лента Макет → группа команд Данные → команда Повторить строки
заголовков):
Шаг 5. Назначаем выравнивание содержимого
ячеек строки заголовков по центру (лента Макет → группа команд Выравнивание → команда
Выровнять по центру):
Шаг 6. Назначаем заливку строки заголовка
(лента Конструктор → группа команд Стили таблиц → команда Заливка → выбор цвета
заливки из палитры):
Шаг 7. Устанавливаем полужирное начертание шрифта
заголовка и назначаем ему красный цвет (лента Главная → группа команд Шрифт → кнопка
«Ж» и кнопка Цвет текста → выбор цвета из палитры):
Шаг 8. Выделяем всю таблицу лента Макет → группа
команд Таблица → команда Выделить → команда Выделить таблицу из выпадающего
меню):
Шаг 9. Назначаем границы таблицы (лента
Конструктор → группа команд Обрамление → команда Цвет пера → выбор цвета
границы из палитры → команда Граница → команда Все границы из выпадающего
меню):
Шаг 10. Назначаем поля ячеек (лента Макет → группа команд Выравнивание → команда Поля ячейки → диалоговое окно Параметры таблицы[2] → Поля ячеек пользовательские):
Шаг 11. Устанавливаем Автоподбор таблицы по ширине окна (лента Макет → группа команд Размер ячейки → команда Автоподбор по ширине окна[3] из выпадающего меню):
Шаг 12. Останавливаем запись макроса (лента
Разработчик → группа команд Код → команда Остановить запись):
Команда «Остановить запись» дублируется скромным квадратиком на строке состояния:
Всё! Макрос для таблицы готов!
4. Проверка макроса в действии
Шаг 1. Выделяем заголовок любой таблицы:
Шаг 2. Нажимаем сочетание клавиш Ctrl+1 и любуемся результатом:
А теперь посмотрим,
как будет работать макрос на таблице со сложным заголовком. В учебном файле это
Таблица 4.
Шаг 1. Выделяем сложный заголовок, то есть
заголовок, состоящий из двух строчек и объединённых ячеек:
Шаг 2. Нажимаем сочетание клавиш Ctrl+1 и любуемся результатом:
И под занавес.
5. Кнопка запуска макроса «Форматирование_таблицы» на Панели быстрого доступа
Шаг 1. Вызываем диалоговое окно «Параметры Word» (Панель быстрого доступа → команда Другие команды из выпадающего меню):
Как настраивать Панель быстрого доступа я рассказывала в Уроке 18 и Уроке 19.
Шаг 2. Выбираем список «Макрос» (кнопка выпадающего
меню → список Макрос):
Шаг 3. Добавляем макрос для таблицы на Панель быстрого доступа (пока макрос один, но у нас всё впереди):
ОК! А вот результат:
Макрос для таблицы будет запускаться при нажатии кнопки на Панели быстрого доступа.
Теперь вы сможете:
- Составить алгоритм форматирования таблицы
- Настроить ленту «Разработчик»
- Записать макрос форматирования таблицы
- Проверить макрос в действии
- Добавить кнопку «Макрос» на панель быстрого доступа
[1]
В контекстном меню – «Настройка ленты», а в окне «Параметры Word» – «Вкладка»
[2] Интересно, почему команда «Поля ячейки», а диалоговое окно называется «Параметры таблицы»? Загадка природы, небрежность переводчиков или шутка разработчиков?
[3]
Вообще-то команда имеет смысл «Автоподбор по ширине печатного поля», но не
будем придираться.
Создание таблиц в документе Word из кода VBA Excel. Метод Tables.Add, его синтаксис и параметры. Объекты Table, Column, Row, Cell. Границы таблиц и стили.
Работа с Word из кода VBA Excel
Часть 4. Создание таблиц в документе Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]
Таблицы в VBA Word принадлежат коллекции Tables, которая предусмотрена для объектов Document, Selection и Range. Новая таблица создается с помощью метода Tables.Add.
Синтаксис метода Tables.Add
Expression.Add (Range, Rows, Columns, DefaultTableBehavior, AutoFitBehavior) |
Expression – выражение, возвращающее коллекцию Tables.
Параметры метода Tables.Add
- Range – диапазон, в котором будет создана таблица (обязательный параметр).
- Rows – количество строк в создаваемой таблице (обязательный параметр).
- Columns – количество столбцов в создаваемой таблице (обязательный параметр).
- DefaultTableBehavior – включает и отключает автоподбор ширины ячеек в соответствии с их содержимым (необязательный параметр).
- AutoFitBehavior – определяет правила автоподбора размера таблицы в документе Word (необязательный параметр).
Создание таблицы в документе
Создание таблицы из 3 строк и 4 столбцов в документе myDocument без содержимого и присвоение ссылки на нее переменной myTable:
With myDocument Set myTable = .Tables.Add(.Range(Start:=0, End:=0), 3, 4) End With |
Создание таблицы из 5 строк и 4 столбцов в документе Word с содержимым:
With myDocument myInt = .Range.Characters.Count — 1 Set myTable = .Tables.Add(.Range(Start:=myInt, End:=myInt), 5, 4) End With |
Для указания точки вставки таблицы присваиваем числовой переменной количество символов в документе минус один. Вычитаем единицу, чтобы исключить из подсчета последний знак завершения абзаца (¶), так как точка вставки не может располагаться за ним.
Последний знак завершения абзаца всегда присутствует в документе Word, в том числе и в новом без содержимого, поэтому такой код подойдет и для пустого документа.
При создании, каждой новой таблице в документе присваивается индекс, по которому к ней можно обращаться:
myDocument.Tables(индекс) |
Нумерация индексов начинается с единицы.
Отображение границ таблицы
Новая таблица в документе Word из кода VBA Excel создается без границ. Отобразить их можно несколькими способами:
Вариант 1
Присвоение таблице стиля, отображающего все границы:
myTable.Style = «Сетка таблицы» |
Вариант 2
Отображение внешних и внутренних границ в таблице:
With myTable .Borders.OutsideLineStyle = wdLineStyleSingle .Borders.InsideLineStyle = wdLineStyleSingle End With |
Вариант 3
Отображение всех границ в таблице по отдельности:
With myTable .Borders(wdBorderHorizontal) = True .Borders(wdBorderVertical) = True .Borders(wdBorderTop) = True .Borders(wdBorderLeft) = True .Borders(wdBorderRight) = True .Borders(wdBorderBottom) = True End With |
Присвоение таблицам стилей
Вариант 1
myTable.Style = «Таблица простая 5» |
Чтобы узнать название нужного стиля, в списке стилей конструктора таблиц наведите на него указатель мыши. Название отобразится в подсказке. Кроме того, можно записать макрос с присвоением таблице стиля и взять название из него.
Вариант 2
myTable.AutoFormat wdTableFormatClassic1 |
Выбирайте нужную константу с помощью листа подсказок свойств и методов – Auto List Members.
Обращение к ячейкам таблицы
Обращение к ячейкам второй таблицы myTable2 в документе myDocument по индексам строк и столбцов:
myTable2.Cell(nRow, nColumn) myDocument.Tables(2).Cell(nRow, nColumn) |
- nRow – номер строки;
- nColumn – номер столбца.
Обращение к ячейкам таблицы myTable в документе Word с помощью свойства Cell объектов Row и Column и запись в них текста:
myTable.Rows(2).Cells(2).Range = _ «Содержимое ячейки во 2 строке 2 столбца» myTable.Columns(3).Cells(1).Range = _ «Содержимое ячейки в 1 строке 3 столбца» |
В таблице myTable должно быть как минимум 2 строки и 3 столбца.
Примеры создания таблиц Word
Пример 1
Создание таблицы в новом документе Word со сплошными наружными границами и пунктирными внутри:
Sub Primer1() Dim myWord As New Word.Application, _ myDocument As Word.Document, myTable As Word.Table Set myDocument = myWord.Documents.Add myWord.Visible = True With myDocument Set myTable = .Tables.Add(.Range(0, 0), 5, 4) End With With myTable .Borders.OutsideLineStyle = wdLineStyleSingle .Borders.InsideLineStyle = wdLineStyleDot End With End Sub |
В выражении myDocument.Range(Start:=0, End:=0)
ключевые слова Start и End можно не указывать – myDocument.Range(0, 0)
.
Пример 2
Создание таблицы под ранее вставленным заголовком, заполнение ячеек таблицы и применение автосуммы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
Sub Primer2() On Error GoTo Instr Dim myWord As New Word.Application, _ myDocument As Word.Document, _ myTable As Word.Table, myInt As Integer Set myDocument = myWord.Documents.Add myWord.Visible = True With myDocument ‘Вставляем заголовок таблицы .Range.InsertAfter «Продажи фруктов в 2019 году» & vbCr myInt = .Range.Characters.Count — 1 ‘Присваиваем заголовку стиль .Range(0, myInt).Style = «Заголовок 1» ‘Создаем таблицу Set myTable = .Tables.Add(.Range(myInt, myInt), 4, 4) End With With myTable ‘Отображаем сетку таблицы .Borders.OutsideLineStyle = wdLineStyleSingle .Borders.InsideLineStyle = wdLineStyleSingle ‘Форматируем первую и четвертую строки .Rows(1).Range.Bold = True .Rows(4).Range.Bold = True ‘Заполняем первый столбец .Columns(1).Cells(1).Range = «Наименование» .Columns(1).Cells(2).Range = «1 квартал» .Columns(1).Cells(3).Range = «2 квартал» .Columns(1).Cells(4).Range = «Итого» ‘Заполняем второй столбец .Columns(2).Cells(1).Range = «Бананы» .Columns(2).Cells(2).Range = «550» .Columns(2).Cells(3).Range = «490» .Columns(2).Cells(4).AutoSum ‘Заполняем третий столбец .Columns(3).Cells(1).Range = «Лимоны» .Columns(3).Cells(2).Range = «280» .Columns(3).Cells(3).Range = «310» .Columns(3).Cells(4).AutoSum ‘Заполняем четвертый столбец .Columns(4).Cells(1).Range = «Яблоки» .Columns(4).Cells(2).Range = «630» .Columns(4).Cells(3).Range = «620» .Columns(4).Cells(4).AutoSum End With ‘Освобождаем переменные Set myDocument = Nothing Set myWord = Nothing ‘Завершаем процедуру Exit Sub ‘Обработка ошибок Instr: If Err.Description <> «» Then MsgBox «Произошла ошибка: « & Err.Description End If If Not myWord Is Nothing Then myWord.Quit Set myDocument = Nothing Set myWord = Nothing End If End Sub |
Метод AutoSum суммирует значения в ячейках одного столбца над ячейкой с суммой. При использовании его для сложения значений ячеек в одной строке, результат может быть непредсказуемым.
Чтобы просуммировать значения в строке слева от ячейки с суммой, используйте метод Formula объекта Cell:
myTable.Cell(2, 4).Formula («=SUM(LEFT)») |
Другие значения метода Formula, применяемые для суммирования значений ячеек:
- «=SUM(ABOVE)» – сумма значений над ячейкой (аналог метода AutoSum);
- «=SUM(BELOW)» – сумма значений под ячейкой;
- «=SUM(RIGHT)» – сумма значений справа от ячейки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
Option Explicit Global WA As Object, WD As Object Global Const template As String = "Form_All.docx" Sub MakeDocs(flagPrint As Integer) Const wdExportFormatPDF As Integer = 17, _ wdExportOptimizeForOnScreen As Integer = 1, _ wdExportAllDocument As Integer = 0, _ wdExportDocumentContent As Integer = 0, _ wdExportCreateNoBookmarks As Integer = 0 Dim i As Integer, OutDoc As String, OutPath As String, _ Age As Integer, suffix As String, sAddr As String, sExt As String If Dir(ThisWorkbook.Path & "" & template) = "" Then Call MsgBox("Нет файла шаблона " & template, vbCritical + vbOKOnly, "Внимание!") Exit Sub End If Application.ScreenUpdating = False On Error Resume Next Set WA = GetObject(, "Word.Application") If WA Is Nothing Then Set WA = CreateObject("Word.Application") Set WD = WA.Documents.Open(Filename:=ThisWorkbook.Path & "" & template) ' Page 1 - Russian Call FieldReplace("{DATE}", frmWork.dtForm.Caption) ' Справка от Call FieldReplace("{NAME_R}", frmWork.txtFIO.Text) ' ФИО Call FieldReplace("{GENDER_R}", frmWork.cbSex.Value) ' Пол Call FieldReplace("{DOB}", frmWork.dtBirth.Caption) ' Дата рождения Call FieldReplace("{ADDR_R}", frmWork.txtReg.Text) ' Адрес регистрации Call FieldReplace("{TEST_R}", frmWork.cbTestRus.Value) ' Наименование теста Call FieldReplace("{DT_GET}", frmWork.dt_Get.Caption) ' Дата взятия биоматериала Call FieldReplace("{DT_TST}", frmWork.dt_Exc.Caption) ' Дата выполнения теста Call FieldReplace("{RES_R}", frmWork.cbRes.Value) ' Результат теста Call FieldReplace("{POS_R}", frmWork.lblPos.Caption) ' Должность врача Call FieldReplace("{DOCT_R}", GetInit(frmWork.cbDoctor.Value)) ' ФИО доктора Application.StatusBar = "Сохранение файла..." OutPath = frmWork.txtOut.Text OutDoc = OutPath & "" & Replace(Replace(Replace(frmWork.txtFIO.Text & " " & frmWork.dtForm.Caption, " ", "_"), ".", "_"), ":", "_") WD.ExportAsFixedFormat OutputFileName:=OutDoc, ExportFormat:=wdExportFormatPDF, _ OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForOnScreen, _ Range:=wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _ IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=wdExportCreateNoBookmarks, _ DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False WD.Close SaveChanges:=False WA.Quit False Set WD = Nothing Set WA = Nothing End Sub Private Sub FieldReplace(s1 As String, s2 As String) Application.StatusBar = "Замена " & s1 & " на " & s2 & "..." WD.Activate With WA.Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = s1 .Replacement.Text = s2 .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll End With End Sub |
Вы знаете, насколько трудоемкими могут быть повторяющиеся задачи. Если вы обнаружите, что повторно создаете одну и ту же таблицу в своих документах Word, почему бы не автоматизировать эту работу? Используя макрос, вы можете создать таблицу один раз и легко использовать ее повторно.
Возможно, вы захотите использовать одну и ту же таблицу в разных местах одного документа. Вместо многократного копирования и вставки таблицы просто запустите макрос. Или, может быть, вы создаете обычные бизнес-отчеты, которые иногда содержат таблицу. Вы можете использовать шаблон, но если вам не нужна таблица каждый раз, потребуются дополнительные усилия, чтобы настроить ее, когда вы делать нужно это.
Давайте посмотрим, как легко использовать макрос для создания пользовательской таблицы, которую вы можете повторно использовать в любое время.
Если вы никогда не использовали макросы в Microsoft Word, вы можете испугаться. Тем не менее, макросы — это, по сути, фрагменты программирования, созданные с помощью нажатых клавиш, слов, которые вы вводите, или действий мыши, которые вы делаете. Вы просто записываете макрос, а затем запускаете его, когда захотите. Программирование происходит за кулисами, поэтому нет причин даже просматривать какой-либо код, если вы этого не хотите.
Прежде чем настраивать свой собственный макрос, вы можете узнать, почему вам следует с осторожностью относиться к получаемым вами файлам, содержащим макросы, созданные другими.
Запись макроса для пользовательской таблицы
Чтобы создать макрос, убедитесь, что макросы включены в Microsoft Office. Вы можете начать запись макроса, нажав кнопку «Запись макроса» в строке состояния в нижней части Word или щелкнув «Макросы» > «Запись макроса» на ленте на вкладке «Вид».
Когда появится окно «Запись макроса», заполните детали:
- Имя макроса: Дайте вашему макросу имя, которое вы узнаете (без пробелов). Мы будем использовать CustomTable.
- Назначить макрос: выберите, хотите ли вы назначить его кнопке или сочетанию клавиш. Вы также можете получить доступ к своим макросам и запустить их на вкладке «Вид», нажав «Макросы» > «Просмотреть макросы».
- Сохранить макрос в: по умолчанию макросы хранятся во всех документах, что позволяет повторно использовать их во всех документах Word. Но вы можете выбрать текущий документ из раскрывающегося списка, если хотите.
- Описание: При желании добавьте описание.
Нажмите «ОК», когда закончите и будете готовы создать таблицу.
Имейте в виду, что вы уже начали запись, поэтому вам нужно настроить таблицу, прежде чем делать что-либо еще в Word. При необходимости вы можете приостановить запись, перейдя на вкладку «Вид» и нажав «Приостановить запись» в раскрывающемся списке «Макросы».
Создать таблицу
Теперь вы можете создать свою таблицу, как обычно, сначала перейдя на вкладку «Вставка». Щелкните стрелку раскрывающегося списка «Таблица» и либо перетащите, чтобы выбрать количество столбцов и строк, либо выберите «Вставить таблицу», введите номера столбцов и строк и нажмите «ОК».
При желании настроить таблицу
Затем вы можете делать такие вещи, как добавление стиля к вашей таблице или ввод заголовков столбцов или строк. Цель состоит в том, чтобы включить настройки в вашу таблицу, которые вы всегда захотите использовать повторно. В конце концов, смысл в том, чтобы сэкономить время в пути!
В качестве примера мы вставили таблицу четыре на четыре со стилем таблицы с полосами и заголовками столбцов.
Совет: старайтесь не перенастраивать свою таблицу. Если вы добавите слишком много модных опций, вы можете столкнуться с ошибками при запуске макроса.
Остановить запись макроса
Когда вы закончите создание таблицы, нажмите кнопку «Остановить запись» в строке состояния или перейдите на вкладку «Вид» и нажмите «Остановить запись» в раскрывающемся списке «Макросы».
Запустите макрос, чтобы вставить таблицу
Когда придет время использовать собственный макрос таблицы, поместите курсор в документ в то место, куда вы хотите вставить таблицу.
Вы можете использовать назначенную вами кнопку или созданное вами сочетание клавиш. Или вы можете перейти на вкладку «Вид», щелкнуть стрелку раскрывающегося списка «Макросы» и выбрать «Просмотр макросов».
Выберите свой макрос в списке и нажмите «Выполнить».
Затем ваша таблица должна появиться в вашем документе в том месте, которое вы выбрали.
Если вы создаете документ, содержащий таблицу, которую вы планируете часто использовать повторно, рассмотрите возможность записи макроса, чтобы в будущем вы могли легко вставлять таблицу.
Всех приветствую!
Возникла задача автоматизации формирования таблицы в документе Word из данных, вводимых в таблицу Excel.
- Имеется таблица Excel
Примерный формат приведён ниже, с неопределенным количеством вводимых данных, но со строго указанной формой. Необходимо при нажатии клавиши формировать таблицу в Word документе.
- Имеется сам типовой Word документ
Таблица в документе должна быть заполнена данными из таблицы Excel и в зависимости от количества пунктов (№ п/п) расширяться полями (в качестве примера приведены пустые поля).
- Имеется пример кода, который нашел на просторах интернета:
Думал переделать под свои задачи, но пока не знаю с чего именно начать.
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
Подскажите, как это реализовать с применением макросов VBA?
Буду рад любой помощи, примерам кода, алгоритму как это делать. Прочесал форумы, но не нашел необходимой информации, хоть и задача является типичной.