Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/187: Рейтинг темы: голосов - 187, средняя оценка - 4.89
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81

Макрос. Автозаполнение анкеты в Word. Нужна помощь

12.09.2011, 13:44. Показов 39004. Ответов 96
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю макрос для автоматического заполнения анкеты.
Есть куча повторяющихся строк, например фамилия, имя, отчество и т.п.
При выполнении макроса данные вставляются только в одном месте, т.е. например фамилия вставляется только один раз в первой закладке, а дальше по доку пусто.
Помоги кто знает.
Заранее спасибо.
Шаблон прилагаю
Вложения
Тип файла: rar шаблон-анкета.rar (30.5 Кб, 1003 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2011, 13:44
Ответы с готовыми решениями:

нужна помощь с Word
здравствуйте!у меня возникла проблема,при распечатке "ворд" рамка(обычная или другая рамка) сдвигается с поставленного места,при...

Макрос. Вычисление среднего значения от времени. Нужна помощь
Необходимо вычислять среднее значение столбца value в течении каждых 5ти минут и результаты заносить в соседний столбец. Т.е. при диапазоне...

нужна помощь в открытии документ word
Привет всем! У меня проблема с открытием документ Microsoft word. Дела в том что получила письмо и не могу открыть её, я заметила что в...

96
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
12.09.2011, 14:17
kotan,
чтобы видеть Закладки (потом поймёте, зачем они):
Сервис - Параметры... - вкладка Вид - флажок Закладки.

Перейдите к строке Фамилия в документе Word. Вы увидете, что серое поле обрамлено в квадратные скобки. Эти скобки означают, что поле Формы находится в закладке.
Имя поля Формы - это имя закладки, в котором находится поле.
Теперь перейдите к строке, которая не заполняется. Поле будет без квадратных скобок.

Т.е. вам нужно просто напросто переделать всю форму.

Имена полям нужно давать так:
  1. вставьте поле Формы;
  2. щ. по нему правой кн. мыши - Свойства;
  3. закладка: - укажите имя - это и будет именем поля, которое у вас и есть в коде VBA.
1
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
12.09.2011, 14:49  [ТС]
попробовал. одинаковые имены закладок уничтожают друг друга, остается только последняя созданная и соотв. из формы вставляется текст только в последнюю созданную закладку.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
12.09.2011, 14:55
kotan,
давайте имена закладкам такие: Фамилия1, Фамилия2 и т.д.

Затем в коде:
Visual Basic
1
2
ActiveDocument.FormFields("Фамилия1").Result = Me.TextBox1.Text
ActiveDocument.FormFields("Фамилия2").Result = Me.TextBox1.Text
0
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
12.09.2011, 14:58  [ТС]
я понял. имена закладок должны быть уникальными. а есть ли способ обойти это? очень много придет делать "уникальных" вкладок для одного значения?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
12.09.2011, 15:14
kotan,
чтобы было видно поля (потом поймёте, зачем это надо):
Сервис - Параметры... - вкладка Вид - затенение полей: Всегда.

Чтобы было видно непечатаемые символы:
щ. на панели инструментов Стандартная кнопку Непечатаемые знаки.

Допустим встречается строка Фамилия 10 раз:
  1. вставляете поле Формы там, где строка Фамилия, встречается первый раз;
  2. даёте имя полю Фамилия;
  3. для наглядности введите в поле слово Фамилия;
  4. перейдите в то место документа, где строка Фамилия встречается второй раз;
  5. Вставка - Ссылка - Перекрёстная ссылка...;
  6. Тип ссылки: Закладка - выбирете закладку с именем Фамилия - Вставить - Закрыть;
  7. в документ будет вставлено слово Фамилия и оно будет серым. Серое означает, что это не прост текст, а поле (не надо вникать, что это такое);
  8. скопируйте это серое (без знака абзаца);
  9. вставьте скопированное во все строки, где должна быть фамилия.
Теперь при изменении текста в поле Формы в строке Фамилия, будут изменены все перекрёстные ссылки на это поле Формы. Чтобы изменения произошли: Файл - Предварительный просмотр (чтобы произошло обновление полей), а затем выйдите из Предварительного просмотра.
1
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
12.09.2011, 15:22  [ТС]
Спасибо ВАМ огрОмное! Помогло
Понаглею и спрошу еще.
Можно ли сделать так чтобы после заполнения формы все данные в ней сохранялись если потребуется что-то откорректировать (чтобы заново не вбивать все данные, а изменить нужные) и была кнопка типа "Очистить" для ввода новых данных?
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
12.09.2011, 16:33
kotan,
чтобы данные сохранялись в форме, форму надо не выгружать из оперативной памяти компьютера, а просто скрывать, при этом документ Word становится доступным для редактирования:
Visual Basic
1
2
3
Private Sub CommandButton2_Click()
Me.Hide
End Sub
Можно сделать так, что форма будет открыта и можно будет работать с документом. Переключаться между документом и формой в этом случае можно через Панель задач Windows (внизу полоса).


Очистка полей:
Visual Basic
1
2
3
4
5
6
7
8
Private Sub CommandButton1_Click()
Dim Элемент As MSForms.Control
For Each Элемент In Me.Controls
    If TypeName(Элемент) = "TextBox" Then
        Элемент.Text = ""
    End If
Next Элемент
End Sub
1
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
12.09.2011, 18:11  [ТС]
Спасибо большое, все работает. Супер!

Не могу понять куда прописать код в своей форме, чтобы форма автоматически запускалась при отркытии документа. У меня в модуле прописано появление кнопки при открытии (где-то содрал), а вот саму форму на автоподгрузку научить не получается.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
12.09.2011, 19:35
Создайте в самом документе (а не шаблоне Normal) модуль (см. рис), в него поместите вот этот код:

Visual Basic
1
2
3
Sub AutoOpen()
UserForm1.Show
End Sub
Сохраните изменения.

Делаете этот документ доверенным на этом компьютере (чтобы при открытии документа макросы, содержащиеся в этом документе, не блокировались).
Создание сертификата:
  1. Пуск - Все программы - Microsoft Office - Средства Microsoft Office - Цифровой сертификат для проектов VBA;
  2. введите имя Мой сертификат - OK. Теперь у вас есть сертификат, с которым свяжем ваш документ.
Связывание документа с сертификатом (действия надо делать в VBA):
Tools - Digital Signature... - Выбрать... - Мой сертификат - OK - OK.

Подготовка документа к работе:
  1. Сохраните документ.
  2. Закройте документ.
  3. Откройте документ.
  4. Поставьте флажок Всегда доверять макросам от этого издателя - Не отключать макросы.
Теперь можете запускать этот документ у себя на компьютере:
  • не будет заблокирован макрос;
  • появится форма.

На каждом компьютере нужно создавать сертификат и связывать его с документом. Иначе перед открытием документа будет появляться сообщение о том, что в документе есть макросы.
Миниатюры
Макрос. Автозаполнение анкеты в Word. Нужна помощь  
0
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
12.09.2011, 20:44  [ТС]
Работает! НО... если только документ открыть из Офиса как шаблон для редактирования, а если прост нажать на шаблон когда создется новый док автоматически форма не подгружается, но про макросы уже не спрашивает!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
13.09.2011, 08:24
kotan,
а форма должна быть в новых документах?

Т.е. если перенести файл на др. компьютер, в этом файле должна быть форма?
0
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
13.09.2011, 10:21  [ТС]
Busine2009, да, желательно, чтобы могли открывать и на других компьютерах
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
13.09.2011, 14:23
Чтобы форма появлялась при создании нового документа на основе нужного шаблона

Создайте новый документ на основе нужного шаблона (чтобы открыть VBA этого шаблона).
Перейдите в VBA. Во вложенных рисунках Project(Автозапуск) - это шаблон, на основе которого будут создаваться документы-анкеты.

Вот этот код:
Visual Basic
1
2
3
Private Sub Document_New()
UserForm1.Show
End Sub
поместите вот сюда (см. Рисунок1).

А форму поместите вот сюда (см. Рисунок2).

Как поместить форму в новый документ, я ещё не смотрел.
Миниатюры
Макрос. Автозаполнение анкеты в Word. Нужна помощь   Макрос. Автозаполнение анкеты в Word. Нужна помощь  
1
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
13.09.2011, 15:00  [ТС]
наверное недопонял где-то...
1. Нажимаю на свой шаблон.
2. На его основе создается документ, скажем "Документ1"
3. Вхожу в настройки VB этого Документ1
4. Вставляю код в ThisDocument и форму из моего шаблона(рис.1)
5. Сохраняюсь и выхожу. Форма автоматом не подгружается.
вот-с...

и еще забегая вперед, может подскажите, как сделать кнопки в MultiPage на разных страницах с дублирующими друг друга. У меня на одной странице есть кнопки "Вставить", "Очистить", "Выйти" и они все работают, но если скопировать их на вторую вкладку - они не работают.
Миниатюры
Макрос. Автозаполнение анкеты в Word. Нужна помощь  
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
13.09.2011, 15:02
Цитата Сообщение от kotan Посмотреть сообщение
наверное недопонял где-то...
да, неправильно поняли, ещё раз попробуйте.
0
182 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 81
13.09.2011, 15:08  [ТС]
Вставил в ThisDocument вот этот код:
Visual Basic
1
2
3
Sub AutoOpen()
UserForm1.Show
End Sub
Теперь форма подгружается сама!
Спасибо!

Добавлено через 36 секунд
Цитата Сообщение от kotan Посмотреть сообщение
может подскажите, как сделать кнопки в MultiPage на разных страницах с дублирующими друг друга. У меня на одной странице есть кнопки "Вставить", "Очистить", "Выйти" и они все работают, но если скопировать их на вторую вкладку - они не работают.
По этому вопросу подскажите?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
13.09.2011, 15:09
Цитата Сообщение от kotan Посмотреть сообщение
Вставил в ThisDocument вот этот код:
я про другое писал.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
13.09.2011, 15:15
Помещение во вновь созданные документы формы
  1. Создайте где-нибудь у себя на компьютере папку: из неё будет помещаться форма во вновь создаваемый документ.
  2. Помещаем в эту папку форму (действия делаются в VBA):
    • щ. 2 раза левой кн. мыши по форме;
    • File - Export File... - выберите только что созданную папку - Сохранить. В результате в только что созданной папке появятся 2 файла (оба эти файла относятся к одной форме).
  3. Вот сюда (см. Рисунок1) помещаем вот этот код:
    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    
    Private Sub Document_New()
    With Application.VBE
        'Здесь нужно указать ваш путь к файлу формы.
        .VBProjects(.VBProjects.Count).VBComponents.Import _
            FileName:="C:\Documents and Settings\Пользователь\Рабочий стол\UserForm1.frm"
    End With
    UserForm1.Show
    End Sub
Миниатюры
Макрос. Автозаполнение анкеты в Word. Нужна помощь  
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
13.09.2011, 15:41
Цитата Сообщение от kotan Посмотреть сообщение
и еще забегая вперед, может подскажите, как сделать кнопки в MultiPage на разных страницах с дублирующими друг друга. У меня на одной странице есть кнопки "Вставить", "Очистить", "Выйти" и они все работают, но если скопировать их на вторую вкладку - они не работают.
потому что скопированные и вставленные кнопки - это не те же самые - это новые кнопки. Нужно зайти в VBA и записать для каждой новой кнопки код.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2011, 15:41
Помогаю со студенческими работами здесь

Нужна помощь ASP+WORD = Ошибка 800a175d|Не_удается_открыть_банк_макросов.
Народ плз подскажите может кто знает как избавиться от такоой ошибки. 800a175d|Не_удается_открыть_банк_макросов. Вот код который...

Макрос Word 2016 замена шрифта рандомных символов на выбранный - MS Word
Есть обычный текст, только буквы и цифры Нужно, чтобы после обработки макроса выбирались случайные символы (примерно четверть от общего...

Автозаполнение шаблонов WORD
Доброго времени дня! Нужна Ваша помощь с автозаполнением писем. Из-за большого потока клиентов просто не успевал заполнять четыре...

Автозаполнение нумерации Word
Можно ли сделать в Worde автозаполнение нумерации? 1,2,3 и тд. в таблице.

Автозаполнение документа Word
Есть данные которые храняться в таблицах, нужно создать макрос который бы сначала обновлял таблицу которая будет использована для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru