Vba word скрипт заполнение документа данными из формы
АВТОМАТИЗАЦИЯ ЗАПОЛНЕНИЯ ДОКУМЕНТОВ, ЧАСТЬ 4: ПЕРЕНОС ДАННЫХ В WORD
В предыдущих статьях цикла "Автоматизация заполнения документов" я рассказал о том, как сформировать пользовательский интерфейс приложения, организовать проверку вводимых данных и получить число прописью без использования кода VBA. В этой, заключительной статье речь пойдет о волшебстве - переносе всех необходимых значений из рабочей книги Excel в документ Word. Давайте я покажу Вам то, что должно получиться в итоге:
Описание механизма
Для начала в общих чертах опишу, каким именно образом будет происходить перенос данных в документ Word. Прежде всего, нам понадобится шаблон документа Word, содержащий всю разметку, таблицы и ту часть текста, которая будет оставаться неизменной. В этом шаблоне необходимо определить места, в которые будут подставлены значения из рабочей книги Excel, - удобнее всего это сделать с помощью закладок. После этого необходимо упорядочить данные Excel таким образом, чтобы обеспечить соответствие шаблону Word, ну и в последнюю очередь - написать саму процедуру переноса на VBA.
Создание шаблона документа Word
Тут все предельно просто - создаем обычный документ, набираем и форматируем текст, в общем, добиваемся того, чтобы получить необходимую форму. В тех местах, куда необходимо будет подставить значения из Excel нужно создать закладки. Это делается следующим образом:
- Для удобства поддержки напечатать в нужном месте название закладки. Я еще и заключил названия в угловые скобки, так что получилось, например, вот так: для закладки, содержащей дату документа.
- Выделить все название закладки (в моем случае вместе с угловыми скобками), перейти на вкладку "Вставка" и нажать кнопку "Закладка":
Таким образом нужно будет создать все закладки, то есть отметить все места, куда будут вставлены данные из Excel. Получившийся файл нужно сохранить как "Шаблон MS Word" с помощью пункта меню "Файл" -> "Сохранить как. ".
Подготовка данных Excel
Я решил для удобства поместить все данные, которые необходимо перенести в документ Word, на отдельном рабочем листе с названием Bookmarks - закладки. На этом листе два столбца: в первом содержатся названия закладок (в точности так, как они названы в документе Word), а во втором - соответствующие значения, подлежащие переносу.
Часть этих значений получена напрямую из листа ввода данных, а часть - из вспомогательных таблиц, расположенных на листе Support . В этой статье я не буду разбирать формулы, рассчитывающие нужные значения, если что-то будет непонятно - задавайте вопросы в комментариях.
На этом этапе важно правильно указать все названия закладок - от этого зависит правильность переноса данных.
Процедура переноса
- Код выполняется в рабочей книге Excel, данные передаются в Word по одному значению за раз и сразу же размещаются в документе.
- Код выполняется в отдельном документе Word, все данные передаются из Excel одним пакетом.
С точки зрения скорости выполнения, особенно при большом количестве закладок, второй вариант выглядит гораздо привлекательнее, однако требует более сложных действий. Именно его я и использовал.
- Создать шаблон документа Word с поддержкой макросов. В этом шаблоне будет содержаться выполняемый код на VBA.
Почему нужно создать именно шаблон? Таким образом можно защитить программный код от неумышленного изменения. Дело в том, что каждый раз при открытии шаблона создается новый файл Word, сохранить который поверх существующего шаблона просто так не получится. Сам шаблон при этом остается неизменным.
Текст процедуры я приводить в статье не буду - его можно легко посмотреть в файле FillDocument.dotm , расположенном в папке Template в архиве с примером.
Как же воспользоваться всем этим для решения именно Вашей задачи?
Понимаю, что на словах это все выглядит очень просто, но что же получается на деле? Я предлагаю Вам просто воспользоваться уже готовым вариантом. Скачайте архив с примером, в рабочей книге Excel нажмите комбинацию клавиш Alt+F11, чтобы открыть редактор Visual Basic и прочитайте все мои комментарии к программе. Для того, чтобы изменить программу под свои нужды Вам понадобится всего лишь изменить значение нескольких констант, они вынесены в самое начало программы. Весь текст программы Вы можете свободно скопировать в свой проект.
Структура архива
Основной файл - рабочая книга Excel с названием "Создание подтверждений". В этой рабочей книге 4 рабочих листа, из которых отображаются только два: "Input" - лист ввода данных и "Database" - архив всех введенных документов.
В папке Templates находятся шаблоны документов Word. Один из них - шаблон, содержащий программу заполнения закладок, а второй - форма для заполнения. Вы можете использовать без изменений шаблон с программой, но форму для заполнения, естественно, придется переделать в соответствии с Вашими нуждами.
Как переработать пример "под себя"?
- Подготовить шаблон документа Word, который необходимо заполнить. Создать в нем все необходимые закладки и сохранить как "шаблон MS Word".
- Скопировать в папку с подготовленным шаблоном файл FillDocument.dotm из архива, приложенного к этой статье. Этот файл отвечает за заполнение закладок шаблона, и в нем ничего менять не нужно.
- Подготовить рабочую книгу Excel для ввода данных. Вам решать, будет ли она обладать каким-либо "продвинутым" пользовательским интерфейсом и осуществлять разные хитрые расчеты. Главное, чтобы в ней содержался рабочий лист с таблицей соответствия имени закладки в шаблоне Word и значения, которое нужно подставить.
- Вставить в подготовленную рабочую книгу код программы на VBA из файла-примера. Заменить все константы в соответствии с Вашим проектом.
- Протестировать правильность работы.
- Активно пользоваться!
Вместо заключения
Статья, если честно, получилась какой-то путаной и, наверное, не очень понятной, поэтому я жду Ваших вопросов по поводу работы кода, формул или механизма в целом в комментариях к ней.
Другие статьи из цикла:
По этой ссылке Вы перейдете на сайт Microsoft SkyDrive, где Вам будет предложено скачать файл Confirm.rar - это и есть архив приложения.
Составить программу, позволяющую заполнять стандартные заявления
студентов учебного заведения о приеме в профсоюз студентов. Предусмотреть
возможность выбора факультета и курса из раскрывающегося списка.
Дайте наводку в нужном направлении, заранее спасибо.
Заполнение документа Word
Здравствуйте форумчане. Макросами занимаюсь мало и не часто, но вот столкнулся с проблемой.
Заполнение книги Excel данными из документа Word
Добрый день. Пролистал около десятка тем на этом форуме и еще на нескольких, так и не смог найти.
Как автоматизировать заполнение документа Word нужными данными?
Здравствуйте. Подскажите пожалуйста как реализовать такую задумку? В организации есть 4.
Заполнение шаблона word из формы vba
Необходимо заполнить шаблон word'a через форму vba. При выборе одного из нескольких ListIndex в.
Приложите ворд документ с заявлением.
Добавлено через 2 минуты
Для выпадающего списка не надо делать форму.
Решение
1) Создайте в докумете закладки -это места , куда будут вставляться слова из формы.
2) Просмотрите приложенный файл - по такому же принципу можно и создать форму с нужными полями..
noz0o,
Ты просишь составить программу, но ты делаешь это без уважения
А, вообще, поищи информацию по рассылкам в Word.
На такую простую задачу этого будет достаточно
Заполнение формы Word
Хочу поделиться с Вами своим горем)))))) Пишу програмку для облегчения своей работы уже примерно.
Заполнение документа Word несколько раз данными из другого документа
есть некий документ Word(test.docx). Нужно создать новый документ(test1.docx), и заполнить его.
Заполнение документа Word
Вообщем есть такая задача. Сделать программу в которой будет туча текстбоксов подписанных в них.
Заполнение документа Word по меткам
Здравствуйте. Нужно заполнить созданный документ Word'a по меткам. Использую вот такой код: .
Заполнение шаблона документа Word
Помогите пожалуйста, нужно создать программу, которая будет заполнять шаблон документа.
Заполнение документа в Word из нескольких таблиц
У меня такая проблема. Есть 4 таблицы. 3 из который справочники (Область, Город, Улица) и одна.
Продолжаем серию заметок по теме автоматизации документов.
Сегодня я расскажу, как добавить к вашим документам специальную форму, с помощью которой можно легко и просто вводить данные в документ. Введенные в форму данные адресата по нажатию кнопки на форме будут автоматически внесены в документ.
Предполагается, что у вас есть готовый шаблон документа, например, письма. В качестве образца можно использовать подготовленный мною шаблон официального письма вымышленной организации.
Использование шаблона необходимо, ведь на его основе вы в дальнейшем будете создавать свои документы.
Распакуйте файл из архива и поместите его в папку с шаблонами редактора Word. Как правило, эта папка находится по адресу: C:\Documents and Settings\ИМЯ_ПОЛЬЗОВАТЕЛЯ\Application Data\Microsoft\Шаблоны.
Итак, шаблон документа у нас есть, открыт и готов к изменению. В первую очередь нам необходимо добавить закладки в те позиции в документе, куда вы собираетесь вставлять данные из формы. Как правило, письмо должно содержать фамилию, имя и отчество адресата, наименование организации адресата, полный почтовый адрес и приветствие.
Исходя из этого мы добавим в документ следующие закладки:
Обратите внимание, реквизитов адресата, которые должно содержать письмо, на самом деле может быть много, а закладок мы определили всего пять. Это логично, так как в дальнейшем мы будем подставлять несколько реквизитов к одной закладке (например, адрес, который будет состоять из индекса, названия города, области, улицы).
После добавления закладок (и если у вас включен режим отображения меток закладок), наш документ будет выглядеть примерно как на рисунке ниже (щелкните по картинке для ее увеличения):
Эти метки закладок после нажатия кнопки "Внести данные" будут заменены на конкретные тексты.
Не забывайте сохранять сделанные вами изменения в шаблоне на всякий "пожарный" случай.
На втором шаге мы создадим специальную форму с текстовыми полями, которая будет открываться при создании каждого нового документа на основе вашего шаблона письма. Кратко расскажу, как добавить в шаблон форму.
-
Откройте редактор Visual Basic с помощью сочетания клавиш «Alt»+«F11». Убедитесь, что в окне проектов выделен ваш шаблон:
Текстовые поля (со стандартными именами TextBox1) были мною переименованы с учетом их назначения. Обратите внимание в нижеприведенном коде, как они теперь называются.
Третий шаг - написание кода для элементов нашей формы.
-
В меню Insert выберите команду Module. В окне проектов будет создан новый модуль Module1. Дважды щелкните по модулю и перейдите в окно редактирования кода. Вставьте следующий код:
Вы можете скачать уже готовый шаблон письма и подредактировать его под свои нужды.
Образцом для шапки шаблона послужила картинка из шаблона городского письма редактора Word 2007.
Образцом кода для данного макроса и формы послужила заметка Gregory Maxey Address a Letter Using as UserForm.
Вы можете помочь в развитии сайта, сделав пожертвование:
--> Или помочь сайту популярной криптовалютой:
BTC Адрес: 1Pi3a4c6sJPbfF2sSYR2noy61DMBkncSTQ
ETH Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634
LTC Адрес: LUyT9HtGjtDyLDyEbLJZ8WZWGYUr537qbZ
USDT (ERC-20) Адрес: 0x7d046a6eaa1bd712f7a6937b042e9eee4998f634
Яндекс Деньги: 410013576807538
А тут весь список наших разных крипто адресов, может какой добрый человек пожертвует немного монет или токенов - получит плюсик в карму от нас :) Благо Дарим, за любую помощь! -->
При нажатии кнопки запуска макрос на основе шаблона dot создаёт очередной файл, и в этом документе производит замену текста ("кода поля") из первой строки файла Excel на значение поля (из очередной строки с данными файла Excel)
Папка для сформированных документов создаётся автоматически, и содержит в имени текущую дату и время
(например, созданная папка будет называться Договоры, сформированные 01-05-2011 в 15-03-24)
Имена создаваемых файлов формируются объединением полей фамилия, имя и отчество, с добавлением расширения doc
PS: Макрос был написан достаточно давно, когда я только начинал изучать VBA, - так что код недостаточно универсален.
Но, в качестве примера, пожалуй, подойдёт (если вам нужен более функциональный макрос, воспользуйтесь универсальной надстройкой (см. ниже))
Ознакомьтесь также с универсальной надстройкой формирования документов по шаблонам,
которая может делать всё тоже самое, что и эта программа,
только в качестве шаблонов могут выступать, помимо документов Word, ещё текстовые файлы, и книги Excel.
В надстройке - много возможностей, и полезных дополнений: склонение ФИО в родительный и дательный падежи, автоматический вывод на печать (с заданным количеством копий), размещение созданных файлов в разных папках, создание и рассылка писем со вложениями, и множество других полезных функций.
По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.
Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.
Есть новая (универсальная) версия, - в которой уже есть практически всё, что может понадобиться.
Комментарии
Спасибо, за макрос, не могли бы подсказать что в нем изменить что бы обрабатывалась только та строка в которой выделенная ячейка?
Спасибо за макрос. Очень помог в работе.
Этот макрос уже не поддерживается.
Используйте новую (расширенную) версию программы, - там все работает без ошибок.
Макрос выдает ошибку (Type mismatch (Error 13)) при обработке ячейки с формулой, подскажите пожалуйста как решить эту проблему?
Здравствуйте. Спасибо вам за этот макрос, который помог мне в работе.
Не могли бы вы еще подсказать как сделать чтоб в шаблон Word прописывались данные из нескольких (разных) строк Excel?
Заранее спасибо.
Подскажите. а можно сделать чтобы макрос обрабатывал только те строки в которых стоит номер договора, а если пусто пропускал?
Ознакомился с программой. Серьезный труд. Снимаю шляпу. Но мне понравился именно этот макрос. С колонтитулами я разобрался - оказалось ничего сложного, да и сам макрос оброс уже кучей доработок. Затянуло, знаете ли ))
Евгений, воспользуйтесь универсальной программой для заполнения документов Word - там реализована подстановка значений в колонтитулы
Вова, если нет денег на заказ, есть только 2 варианта:
1) разобраться в этих макросах, и сделать самому (благо, примеров подобных макросов в интернете предостаточно)
2) обратиться за помощью на любой из форумов по Excel (но, опять же, если с вашей стороны никаких наработок нет, вряд ли кто сделает всю работу за вас)
А если в етом макросе сделать так чтоби он заменял дание сначла с строки активной ячейки а потом если одна из ячеек следующей строки = ячейке из предедущей строкии снова вставлял в ворд документ заменяемие поля и снова делел замену, и так до момента когда одна из ячеек не будеть раван ячеике из следуищей, строки тогад макрос по ектому условию не вставляет заменяемие поля а просто сохраняет ворд документ. То есь допустим мне нужно создать документ ворд по одному из людей дание по которому есть в нескольких строках. Пожалста помогите очень нужно, просто нет денег на заказ.
Вова, в этом случае универсальное решение сделать не получится - уж слишком много возможных вариантов расположения данных в Excel, и способов заполнения документов Word.
Оформляйте заказ на сайте - сделаю для вас макрос под ваши требования.
Подскажите пожалуйста, как сделать так, чтобы макрос формировал один документ ворд на основании данных из нескольких строк Excel?
А как реализовать те же возможности, только используя функцию слияния в Word. Чтобы каждый новый раз не формировался новый документ а запись делалась на новой странице?
Теперь доступна новая версия универсальной программы формирования документов по шаблонам.
Программа очень удобна для быстрого создания договоров и приказов, заполнения актов и инструкций, печати писем и соглашений, заполнения путевых листов и извещений, распечатки протоколов и соглашений, подстановки данных в шаблоны заявлений и доверенностей.
Количество файлов-шаблонов (Word, Excel, TXT) неограничено.
Замечательно. Я, долгое время искал нечто подобное. Но к счасливой случайности вышел на Ваш сайт. Установил панели для VBA. И ещё коу-что. Практически разобрался в работе данного макроса. В VBA я, недавно. Но поставил перед собой задачу изучить его. Для этого я, решил составить программу для заполнения бланков аттестатов о среднем образовании и бланков дипломов об окончании ПТУ. До этого они заполнялись вручную. Задачу в Excel, я, программно решил, не безВашего в ней участия, некоторые фрагменты кода. У меня база заполняется посредством форм в виде развёрнутого аттестата. А, вот транспортировка данных в Word с листов - разворот и последняя страница. Как-то чуть-чуть не вяжется с общим видом программы. Нельзя-ли макрос транспортировки "засунуть" под форму? Если можно, то не смогли бы Вы посоветовать мне как это сделать. Делаю эту программу потому, что на Украине все мучаются с авторизованым заполнением бланков об окончании учебных заведений. А, так я бы мог бесплатно, это моё безусловное кредо, предоставить программу желающим. Заранее Вам благодарен. Помогая мне Вы помогаете и до того замордованым классным руководителям школ Украины.
'2. Заполнение данных в Файл архива корректировки
'Ответчики
For i = 1 To 10
Klient & i.Value = UF1.TXBclient & i.Value 'ФИО Клиента
Rojd & i.Value = UF1.TXBclientBorn & i.Value 'Дата рождения Клиента
MestoRojd & i.Value = UF1.TXBclientUroj & i.Value 'Место рождения Клиента
Next i
'. Сохраняем файл как ". "
ChangeFileOpenDirectory "C:\Тест ВБ\Архив корректировки"
ActiveDocument.SaveAs FileName:="Дело № " + UF1.TextBox2.Value + ".doc"
'. Закрываем файл ". "
ActiveDocument.Close
Заполнение когда конкретные адреса - работает без проблем, а вот как правильно прописать тело цикла (Ответчики)?
Ми.Контрол не помогает, или я его не правильно прописываю
Klient Rojd MestoRojd - Текстбоксы
'2. Заполнение данных в Файл архива корректировки
'Ответчики
For i = 1 To 10
Klient & i.Value = UF1.TXBclient & i.Value 'ФИО Клиента
Rojd & i.Value = UF1.TXBclientBorn & i.Value 'Дата рождения Клиента
MestoRojd & i.Value = UF1.TXBclientUroj & i.Value 'Место рождения Клиента
Next i
'. Сохраняем файл как ". "
ChangeFileOpenDirectory "C:\Тест ВБ\Архив корректировки"
ActiveDocument.SaveAs FileName:="Дело № " + UF1.TextBox2.Value + ".doc"
'. Закрываем файл ". "
ActiveDocument.Close
Заполнение когда конкретные адреса - работает без проблем, а вот как правильно прописать тело цикла (Ответчики)?
Ми.Контрол не помогает, или я его не правильно прописываю
Klient Rojd MestoRojd - Текстбоксы Skorpika
'2. Заполнение данных в Файл архива корректировки
'Ответчики
For i = 1 To 10
Klient & i.Value = UF1.TXBclient & i.Value 'ФИО Клиента
Rojd & i.Value = UF1.TXBclientBorn & i.Value 'Дата рождения Клиента
MestoRojd & i.Value = UF1.TXBclientUroj & i.Value 'Место рождения Клиента
Next i
'. Сохраняем файл как ". "
ChangeFileOpenDirectory "C:\Тест ВБ\Архив корректировки"
ActiveDocument.SaveAs FileName:="Дело № " + UF1.TextBox2.Value + ".doc"
'. Закрываем файл ". "
ActiveDocument.Close
Заполнение когда конкретные адреса - работает без проблем, а вот как правильно прописать тело цикла (Ответчики)?
Ми.Контрол не помогает, или я его не правильно прописываю
Klient Rojd MestoRojd - Текстбоксы Автор - Skorpika
Дата добавления - 22.01.2015 в 22:11
Предположительно 2 ошибки.
1. пишете в никуда.
2. читаете из ниоткуда.
Может, конечно, и больше.
Предположительно 2 ошибки.
1. пишете в никуда.
2. читаете из ниоткуда.
Может, конечно, и больше. RAN
Быть или не быть, вот в чем загвоздка!
Может, конечно, и больше. Автор - RAN
Дата добавления - 22.01.2015 в 23:37
RAN,
Всё здесь кроме "'Ответчики. " работает, просто оставил "Ответчиков" только чтобы Вам было понятно что и куда нужно вставить (экспериментов уже там достаточно).
Klient(i) Rojd(i) MestoRojd(i) - Текстбоксы в активном листе ворд (там табличка 3*10 из 10 таких пустых строк), данные в них вставляем из заполненных текстбоксов с формы UF1.
RAN,
Всё здесь кроме "'Ответчики. " работает, просто оставил "Ответчиков" только чтобы Вам было понятно что и куда нужно вставить (экспериментов уже там достаточно).
Klient(i) Rojd(i) MestoRojd(i) - Текстбоксы в активном листе ворд (там табличка 3*10 из 10 таких пустых строк), данные в них вставляем из заполненных текстбоксов с формы UF1. Skorpika
Быть или не быть, вот в чем загвоздка!
Ну так и вставляйте, если вставляются.
Я могу и ошибаться. Но вряд-ли. Автор - RAN
Дата добавления - 23.01.2015 в 00:42
For i = 1 To 1
ActiveDocument.Klient1.Value = UF1.TXBclient1.Value
ActiveDocument.Rojd1.Value = UF1.TXBclientBorn1.Value
ActiveDocument.MestoRojd1.Value = UF1.TXBclientUroj1.Value
ActiveDocument.Projiv1.Value = UF1.TXBclientProjev1.Value
If UF1.KolVoClientS = 1 Then
Exit For
Else
End If
ActiveDocument.Klient2.Value = UF1.TXBclient2.Value
ActiveDocument.Rojd2.Value = UF1.TXBclientBorn2.Value
ActiveDocument.MestoRojd2.Value = UF1.TXBclientUroj2.Value
ActiveDocument.Projiv2.Value = UF1.TXBclientProjev2.Value
If UF1.KolVoClientS = 2 Then
Exit For
Else
End If
ActiveDocument.Klient3.Value = UF1.TXBclient3.Value
ActiveDocument.Rojd3.Value = UF1.TXBclientBorn3.Value
ActiveDocument.MestoRojd3.Value = UF1.TXBclientUroj3.Value
ActiveDocument.Projiv3.Value = UF1.TXBclientProjev3.Value
If UF1.KolVoClientS = 3 Then
Exit For
Else
End If
ActiveDocument.Klient4.Value = UF1.TXBclient4.Value
ActiveDocument.Rojd4.Value = UF1.TXBclientBorn4.Value
ActiveDocument.MestoRojd4.Value = UF1.TXBclientUroj4.Value
ActiveDocument.Projiv4.Value = UF1.TXBclientProjev4.Value
If UF1.KolVoClientS = 4 Then
Exit For
Else
End If
ActiveDocument.Klient5.Value = UF1.TXBclient5.Value
ActiveDocument.Rojd5.Value = UF1.TXBclientBorn5.Value
ActiveDocument.MestoRojd5.Value = UF1.TXBclientUroj5.Value
ActiveDocument.Projiv5.Value = UF1.TXBclientProjev5.Value
If UF1.KolVoClientS = 5 Then
Exit For
Else
End If
ActiveDocument.Klient6.Value = UF1.TXBclient6.Value
ActiveDocument.Rojd6.Value = UF1.TXBclientBorn6.Value
ActiveDocument.MestoRojd6.Value = UF1.TXBclientUroj6.Value
ActiveDocument.Projiv6.Value = UF1.TXBclientProjev6.Value
If UF1.KolVoClientS = 6 Then
Exit For
Else
End If
ActiveDocument.Klient7.Value = UF1.TXBclient7.Value
ActiveDocument.Rojd7.Value = UF1.TXBclientBorn7.Value
ActiveDocument.MestoRojd7.Value = UF1.TXBclientUroj7.Value
ActiveDocument.Projiv7.Value = UF1.TXBclientProjev7.Value
If UF1.KolVoClientS = 7 Then
Exit For
Else
End If
ActiveDocument.Klient8.Value = UF1.TXBclient8.Value
ActiveDocument.Rojd8.Value = UF1.TXBclientBorn8.Value
ActiveDocument.MestoRojd8.Value = UF1.TXBclientUroj8.Value
ActiveDocument.Projiv8.Value = UF1.TXBclientProjev8.Value
If UF1.KolVoClientS = 8 Then
Exit For
Else
End If
ActiveDocument.Klient9.Value = UF1.TXBclient9.Value
ActiveDocument.Rojd9.Value = UF1.TXBclientBorn9.Value
ActiveDocument.MestoRojd9.Value = UF1.TXBclientUroj9.Value
ActiveDocument.Projiv9.Value = UF1.TXBclientProjev9.Value
If UF1.KolVoClientS = 9 Then
Exit For
Else
End If
ActiveDocument.Klient10.Value = UF1.TXBclient10.Value
ActiveDocument.Rojd10.Value = UF1.TXBclientBorn10.Value
ActiveDocument.MestoRojd10.Value = UF1.TXBclientUroj10.Value
ActiveDocument.Projiv10.Value = UF1.TXBclientProjev10.Value
Только циклом может всё таки проще? как грамотно прописать цикл?
For i = 1 To 1
ActiveDocument.Klient1.Value = UF1.TXBclient1.Value
ActiveDocument.Rojd1.Value = UF1.TXBclientBorn1.Value
ActiveDocument.MestoRojd1.Value = UF1.TXBclientUroj1.Value
ActiveDocument.Projiv1.Value = UF1.TXBclientProjev1.Value
If UF1.KolVoClientS = 1 Then
Exit For
Else
End If
ActiveDocument.Klient2.Value = UF1.TXBclient2.Value
ActiveDocument.Rojd2.Value = UF1.TXBclientBorn2.Value
ActiveDocument.MestoRojd2.Value = UF1.TXBclientUroj2.Value
ActiveDocument.Projiv2.Value = UF1.TXBclientProjev2.Value
If UF1.KolVoClientS = 2 Then
Exit For
Else
End If
ActiveDocument.Klient3.Value = UF1.TXBclient3.Value
ActiveDocument.Rojd3.Value = UF1.TXBclientBorn3.Value
ActiveDocument.MestoRojd3.Value = UF1.TXBclientUroj3.Value
ActiveDocument.Projiv3.Value = UF1.TXBclientProjev3.Value
If UF1.KolVoClientS = 3 Then
Exit For
Else
End If
ActiveDocument.Klient4.Value = UF1.TXBclient4.Value
ActiveDocument.Rojd4.Value = UF1.TXBclientBorn4.Value
ActiveDocument.MestoRojd4.Value = UF1.TXBclientUroj4.Value
ActiveDocument.Projiv4.Value = UF1.TXBclientProjev4.Value
If UF1.KolVoClientS = 4 Then
Exit For
Else
End If
ActiveDocument.Klient5.Value = UF1.TXBclient5.Value
ActiveDocument.Rojd5.Value = UF1.TXBclientBorn5.Value
ActiveDocument.MestoRojd5.Value = UF1.TXBclientUroj5.Value
ActiveDocument.Projiv5.Value = UF1.TXBclientProjev5.Value
If UF1.KolVoClientS = 5 Then
Exit For
Else
End If
ActiveDocument.Klient6.Value = UF1.TXBclient6.Value
ActiveDocument.Rojd6.Value = UF1.TXBclientBorn6.Value
ActiveDocument.MestoRojd6.Value = UF1.TXBclientUroj6.Value
ActiveDocument.Projiv6.Value = UF1.TXBclientProjev6.Value
If UF1.KolVoClientS = 6 Then
Exit For
Else
End If
ActiveDocument.Klient7.Value = UF1.TXBclient7.Value
ActiveDocument.Rojd7.Value = UF1.TXBclientBorn7.Value
ActiveDocument.MestoRojd7.Value = UF1.TXBclientUroj7.Value
ActiveDocument.Projiv7.Value = UF1.TXBclientProjev7.Value
If UF1.KolVoClientS = 7 Then
Exit For
Else
End If
ActiveDocument.Klient8.Value = UF1.TXBclient8.Value
ActiveDocument.Rojd8.Value = UF1.TXBclientBorn8.Value
ActiveDocument.MestoRojd8.Value = UF1.TXBclientUroj8.Value
ActiveDocument.Projiv8.Value = UF1.TXBclientProjev8.Value
If UF1.KolVoClientS = 8 Then
Exit For
Else
End If
ActiveDocument.Klient9.Value = UF1.TXBclient9.Value
ActiveDocument.Rojd9.Value = UF1.TXBclientBorn9.Value
ActiveDocument.MestoRojd9.Value = UF1.TXBclientUroj9.Value
ActiveDocument.Projiv9.Value = UF1.TXBclientProjev9.Value
If UF1.KolVoClientS = 9 Then
Exit For
Else
End If
ActiveDocument.Klient10.Value = UF1.TXBclient10.Value
ActiveDocument.Rojd10.Value = UF1.TXBclientBorn10.Value
ActiveDocument.MestoRojd10.Value = UF1.TXBclientUroj10.Value
ActiveDocument.Projiv10.Value = UF1.TXBclientProjev10.Value
Только циклом может всё таки проще? как грамотно прописать цикл? Skorpika
For i = 1 To 1
ActiveDocument.Klient1.Value = UF1.TXBclient1.Value
ActiveDocument.Rojd1.Value = UF1.TXBclientBorn1.Value
ActiveDocument.MestoRojd1.Value = UF1.TXBclientUroj1.Value
ActiveDocument.Projiv1.Value = UF1.TXBclientProjev1.Value
If UF1.KolVoClientS = 1 Then
Exit For
Else
End If
ActiveDocument.Klient2.Value = UF1.TXBclient2.Value
ActiveDocument.Rojd2.Value = UF1.TXBclientBorn2.Value
ActiveDocument.MestoRojd2.Value = UF1.TXBclientUroj2.Value
ActiveDocument.Projiv2.Value = UF1.TXBclientProjev2.Value
If UF1.KolVoClientS = 2 Then
Exit For
Else
End If
ActiveDocument.Klient3.Value = UF1.TXBclient3.Value
ActiveDocument.Rojd3.Value = UF1.TXBclientBorn3.Value
ActiveDocument.MestoRojd3.Value = UF1.TXBclientUroj3.Value
ActiveDocument.Projiv3.Value = UF1.TXBclientProjev3.Value
If UF1.KolVoClientS = 3 Then
Exit For
Else
End If
ActiveDocument.Klient4.Value = UF1.TXBclient4.Value
ActiveDocument.Rojd4.Value = UF1.TXBclientBorn4.Value
ActiveDocument.MestoRojd4.Value = UF1.TXBclientUroj4.Value
ActiveDocument.Projiv4.Value = UF1.TXBclientProjev4.Value
If UF1.KolVoClientS = 4 Then
Exit For
Else
End If
ActiveDocument.Klient5.Value = UF1.TXBclient5.Value
ActiveDocument.Rojd5.Value = UF1.TXBclientBorn5.Value
ActiveDocument.MestoRojd5.Value = UF1.TXBclientUroj5.Value
ActiveDocument.Projiv5.Value = UF1.TXBclientProjev5.Value
If UF1.KolVoClientS = 5 Then
Exit For
Else
End If
ActiveDocument.Klient6.Value = UF1.TXBclient6.Value
ActiveDocument.Rojd6.Value = UF1.TXBclientBorn6.Value
ActiveDocument.MestoRojd6.Value = UF1.TXBclientUroj6.Value
ActiveDocument.Projiv6.Value = UF1.TXBclientProjev6.Value
If UF1.KolVoClientS = 6 Then
Exit For
Else
End If
ActiveDocument.Klient7.Value = UF1.TXBclient7.Value
ActiveDocument.Rojd7.Value = UF1.TXBclientBorn7.Value
ActiveDocument.MestoRojd7.Value = UF1.TXBclientUroj7.Value
ActiveDocument.Projiv7.Value = UF1.TXBclientProjev7.Value
If UF1.KolVoClientS = 7 Then
Exit For
Else
End If
ActiveDocument.Klient8.Value = UF1.TXBclient8.Value
ActiveDocument.Rojd8.Value = UF1.TXBclientBorn8.Value
ActiveDocument.MestoRojd8.Value = UF1.TXBclientUroj8.Value
ActiveDocument.Projiv8.Value = UF1.TXBclientProjev8.Value
If UF1.KolVoClientS = 8 Then
Exit For
Else
End If
ActiveDocument.Klient9.Value = UF1.TXBclient9.Value
ActiveDocument.Rojd9.Value = UF1.TXBclientBorn9.Value
ActiveDocument.MestoRojd9.Value = UF1.TXBclientUroj9.Value
ActiveDocument.Projiv9.Value = UF1.TXBclientProjev9.Value
If UF1.KolVoClientS = 9 Then
Exit For
Else
End If
ActiveDocument.Klient10.Value = UF1.TXBclient10.Value
ActiveDocument.Rojd10.Value = UF1.TXBclientBorn10.Value
ActiveDocument.MestoRojd10.Value = UF1.TXBclientUroj10.Value
ActiveDocument.Projiv10.Value = UF1.TXBclientProjev10.Value
Только циклом может всё таки проще? как грамотно прописать цикл? Автор - Skorpika
Дата добавления - 23.01.2015 в 00:46
Хорошо, может так буде проще. В приложенном файле нужно при нажатии кнопки на форме циклом перенести данные с формы в документ WORD.
Подскажите командную строку спецы.
Хорошо, может так буде проще. В приложенном файле нужно при нажатии кнопки на форме циклом перенести данные с формы в документ WORD.
Подскажите командную строку спецы. Skorpika
RAN, сорь, что значит не работают чекбоксы в ворде?
ну вот второй вариант файла, перебором все работает, но мне нужен цикл, Me.Control в форме работает нормально, а вот в док-те ворд я не знаю как правильно прописать переменную цикла i с активный документом. Ну или так: в ворде 2003 и 2013 работает (кроме цикла) всё прекрасно
RAN, сорь, что значит не работают чекбоксы в ворде?
ну вот второй вариант файла, перебором все работает, но мне нужен цикл, Me.Control в форме работает нормально, а вот в док-те ворд я не знаю как правильно прописать переменную цикла i с активный документом. Ну или так: в ворде 2003 и 2013 работает (кроме цикла) всё прекрасно Skorpika
Андрей, может ты и прав, иной раз лучше уголь разгрузить, чем рабочий фрагмент программы написать.
Просто это контрольный файл, то есть прога в шаблон документа вносит данные людей (до 16 человек), создает и заполняет несколько одинаковых документов (меняется только адрес получателя запроса), и как правило в 10% случаев во вносимых данных случается опечатка, если заметили пока прога работает, исправляют и всё, а когда замечают ошибку в готовых документах при упаковывании в конверт, то тут уже тоскливее, ради 1 буквы нужно всех заново вбивать или открывать с десяток сохраненных запросов и исправлять в ручную в каждом файле. Вот и пришлось решать, создавать файл, где просто содержаться данные которые вносились, форма открывает этот "контрольный" файл (с заначкой введенных ранее данных), расставляет по местам, исправляешь ошибку и одним кликом все снова сформировано, распечатано, сохранено, закрыто.
Этот контрольный файл и сейчас существует и работает оч чудненько. Просто глядя на строки программы тоска берет. Там прога рассчитана на 16 человек по 4 Текстбокса на каждого (фио, дата рожд, место рожд, прож.) по итогу 64 Тбокса плюс ещё пара-тройка общих данных. И перенос этих данных туда и, при необходимости обратно занимает в моем варианте 6 общих Тбоксов и 4*16 по людям. Перенос (в моем варианте) занимает 6 строк программы (общий перенос) + 10 строк на каждого. По итогу 6+160= 166 строк программы. А мне просто хотелось бы 6 общих данных + 6 строк на данные людей (1.фор и=1. 2.активдокумент.контрол.ФИО"и"=юзерформ.контрол.ФИО"и". 3. по дате рожд тоже. 4. по месту рожд. 5.прожив. 6. некст И. ) Итого 12 строк. 12 в любом случае спс, Ran, плюсик добавил
Андрей, может ты и прав, иной раз лучше уголь разгрузить, чем рабочий фрагмент программы написать.
Просто это контрольный файл, то есть прога в шаблон документа вносит данные людей (до 16 человек), создает и заполняет несколько одинаковых документов (меняется только адрес получателя запроса), и как правило в 10% случаев во вносимых данных случается опечатка, если заметили пока прога работает, исправляют и всё, а когда замечают ошибку в готовых документах при упаковывании в конверт, то тут уже тоскливее, ради 1 буквы нужно всех заново вбивать или открывать с десяток сохраненных запросов и исправлять в ручную в каждом файле. Вот и пришлось решать, создавать файл, где просто содержаться данные которые вносились, форма открывает этот "контрольный" файл (с заначкой введенных ранее данных), расставляет по местам, исправляешь ошибку и одним кликом все снова сформировано, распечатано, сохранено, закрыто.
Этот контрольный файл и сейчас существует и работает оч чудненько. Просто глядя на строки программы тоска берет. Там прога рассчитана на 16 человек по 4 Текстбокса на каждого (фио, дата рожд, место рожд, прож.) по итогу 64 Тбокса плюс ещё пара-тройка общих данных. И перенос этих данных туда и, при необходимости обратно занимает в моем варианте 6 общих Тбоксов и 4*16 по людям. Перенос (в моем варианте) занимает 6 строк программы (общий перенос) + 10 строк на каждого. По итогу 6+160= 166 строк программы. А мне просто хотелось бы 6 общих данных + 6 строк на данные людей (1.фор и=1. 2.активдокумент.контрол.ФИО"и"=юзерформ.контрол.ФИО"и". 3. по дате рожд тоже. 4. по месту рожд. 5.прожив. 6. некст И. ) Итого 12 строк. 12 в любом случае спс, Ran, плюсик добавил Skorpika
Читайте также: