Автозаповнення Word

Автозаповнення документів Word при виборі ПІБ людини з ComboBox

Один із користувачів на моєму YouTube каналі поставив таке запитання: Чи можна зробити так, щоб у Word були "зашиті" текстові фрагменти, що часто використовуються? Скажімо, паспортні дані якоїсь людини, рахунок, чи її ідентифікаційний код. Замість того, щоб відкривати інший документ, копіювати ці дані та вставляти у новий, хотілося б, щоб вони були завжди під рукою. Робиш пару кліків, вибираєш зі списку "паспортні дані Іванова А. А." і вставляється весь набір даних. Вибираєш зі списку "Реквізити Клієнта А" і вуаля - всякі ідентифікаційний код, номер рахунку, та інші дані вже вставлені в документ. Чи можлива така зручність?

Звісно таке можна реалізувати. І зараз я покажу вам простий спосіб вирішення такої задачі за допомогою VBA.

Покрокова інструкція автозаповнення документів Word

Відкрийте документ Word і перейдіть на вкладку Розробник. Якщо цієї вкладки немає у Стрічці Word, то додати її можна через налаштування: Файл → Параметри → Налаштування Стрічки (відмітьте галочкою пункт Розробник в полі Основні вкладки).

Розробник Стрічка Word

Натисніть Visual Basic для того щоб відкрити візуальний редактор VBA.

Створіть нову форму, яка буде виводитись користувачеві на екран. Для цього активуйте Normal і натисніть Insert → UserForm.

Normal – це елемент найвищого рівня, який доступний для всіх документів Word. Тобто програми створені тут, можна буде використовувати в будь якому документі (не тільки в поточному).

UserForm VBA

В результаті, у вікні провідника проекту, у вас з'явиться нова форма з назвою UserForm(n). Де n – це номер форми.

UserForm VBA

Зробіть подвійний клік лівою кнопкою миші по UserForm(n), яку ми щойно створили щоб відкрити вікно редагування форм.

Перенесіть на форму потрібні елементи:

  • Label (текстове поле)
  • ComboBox (випадаючий список)
  • CommandButton1 (Кнопка)
  • CommandButton2 (Кнопка)

Форма VBA

У вікні властивостей елементів встановіть потрібні параметри. Наприклад, Caption (заголовок), Width (ширина), Height (висота) та ін.

Властивості елементів VBA

Натисніть 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

Цей код підлаштуйте під себе.

  1. Замініть UserForm1 на ім'я тієї форми, яку ви створили. У вас це може бути UserForm2, UserForm3, або будь яке інше ім'я.
  2. В AddItem замініть ПІБ людей на ті які потрібні вам.
  3. Значення змінної pasValue замініть на ті які потрібні вам.
  4. Якщо ComboBox1, CommandButton1 і CommandButton2 мають інші імена, то замініть і їх в коді.

VBA код

Збережіть проект.

Створіть новий модуль Insert → Module.

Modules VBA

Зробіть подвійний клік лівою кнопкою миші по створеному модулю, щоб перейти до редактору коду саме цього модуля і вставте в нього наступний код:

Sub ВставкаПаспортнихДаних()
    UserForm1.Show
End Sub

Форми VBA

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

Відео: Автоматичне заповнення Word

Main Menu