Один из пользователей на моем YouTube канале задал такой вопрос: Можно ли сделать так, чтобы в Word были "зашиты" часто используемые текстовые фрагменты? Скажем, паспортные данные какого-то человека, счет или его идентификационный код. Вместо того чтобы открывать другой документ, копировать эти данные и вставлять в новый, хотелось бы, чтобы они были всегда под рукой. Делаешь пару кликов, выбираешь из списка "паспортные данные Иванова А. А." и вставляется весь набор данных. Выбираешь из списка "Реквизиты Клиента А" и вуаля – всякие идентификационный код, номер счета и другие данные уже вставлены в документ. Возможно ли такое удобство?
Конечно же это можно реализовать. И сейчас я покажу вам простой способ решения такой задачи с помощью VBA.
Пошаговая инструкция по автозаполнению документов Word
Откройте документ Word и перейдите на вкладку Разработчик. Если этой вкладки нет на Ленте Word, то добавить её можно через настройки: Файл → Параметры → Настройки Ленты (отметьте галочкой пункт Разработчик в поле Основные вкладки).

Нажмите Visual Basic, чтобы открыть визуальный редактор VBA.
Создайте новую форму, которая будет отображаться пользователю на экран. Для этого активируйте Normal и нажмите Insert → UserForm.
Normal – это элемент наивысшего уровня, доступный для всех документов Word. То есть, программы созданные здесь, можно будет использовать в любом документе (не только в текущем).

В результате, в окне проводника проекта, у вас появится новая форма с названием UserForm(n). Где n – это номер формы.

Сделайте двойной клик левой кнопкой мыши по UserForm(n), которую мы только что создали, чтобы открыть окно редактирования форм.
Перенесите на форму нужные элементы:
- Label (текстовое поле)
- ComboBox (випадающий список)
- CommandButton1 (Кнопка)
- CommandButton2 (Кнопка)

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

Нажмите F7, чтобы открыть Редактор кода VBA и вставьте следующий код:
Private Sub CommandButton1_Click()
Dim selectedValue As String, pasValue As String
selectedValue = UserForm1.ComboBox1.Value
' Тут перераховуємо ПІБ з ComboBox1 та значення які потрібно виводити при виборі конкретного ПІБ
Select Case selectedValue
Case "Іванов Іван Іванович"
pasValue = "Паспорт 1"
Case "Петров Петро Петрович"
pasValue = "Паспорт 2"
Case "Семенюта Сергій Дмитрович"
pasValue = "Паспорт 3"
Case "Степаненко Олександр Володимирович"
pasValue = "Паспорт 4"
Case "Іванченко Софія Дмитрівна"
pasValue = "Паспорт 5"
Case "Панченко Аріна Сергіївна"
pasValue = "Паспорт 6"
Case "Сліпченко Стефанія Володимирівна"
pasValue = "Паспорт 7"
Case Else
pasValue = ""
End Select
' Вставляємо значення документ Word (передбачається, що документ Word вже відкрито)
If pasValue <> "" Then
Selection.TypeText pasValue
End If
End Sub
Private Sub CommandButton2_Click()
Dim selectedValue As String, pasValue As String
selectedValue = UserForm1.ComboBox1.Value
' Тут перераховуємо ПІБ з ComboBox1 та значення які потрібно виводити при виборі конкретного ПІБ
Select Case selectedValue
Case "Іванов Іван Іванович"
pasValue = "Індентифікаційний код 1"
Case "Петров Петро Петрович"
pasValue = "Індентифікаційний код 2"
Case "Семенюта Сергій Дмитрович"
pasValue = "Індентифікаційний код 3"
Case "Степаненко Олександр Володимирович"
pasValue = "Індентифікаційний код 4"
Case "Іванченко Софія Дмитрівна"
pasValue = "Індентифікаційний код 5"
Case "Панченко Аріна Сергіївна"
pasValue = "Індентифікаційний код 6"
Case "Сліпченко Стефанія Володимирівна"
pasValue = "Індентифікаційний код 7"
Case Else
pasValue = ""
End Select
' Вставляємо значення документ Word (передбачається, що документ Word вже відкрито)
If pasValue <> "" Then
Selection.TypeText pasValue
End If
End Sub
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "Іванов Іван Іванович"
.AddItem "Петров Петро Петрович"
.AddItem "Семенюта Сергій Дмитрович"
.AddItem "Степаненко Олександр Володимирович"
.AddItem "Іванченко Софія Дмитрівна"
.AddItem "Панченко Аріна Сергіївна"
.AddItem "Сліпченко Стефанія Володимирівна"
End With
End Sub
Этот код подстройте под себя.
- Замените UserForm1 на имя формы, которую вы создали. Это может быть UserForm2, UserForm3 или любое другое имя.
- В AddItem замените ФИО людей на нужные вам.
- Значение переменной pasValue замените необходимыми вам.
- Если ComboBox1, CommandButton1 и CommandButton2 имеют другие имена, то замените и их в коде.

Сохраните проект.
Создайте новый модуль Insert → Module.

Сделайте двойной клик левой кнопкой мыши по созданному модулю, чтобы перейти к редактору кода именно этого модуля и вставьте в него следующий код:
Sub ВставкаПаспортнихДаних()
UserForm1.Show
End Sub

Этот код создаст новый макрос, который будет выводить на экран ранее созданную форму.
