Один із користувачів на моєму 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

Цей код створить новий макрос, який буде виводити на екран створену раніше форму.
