Автозаполнение 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