Скрипт Vba word, заполняющий документ данными из формы

Обновлено: 07.07.2024

Если вам нужно преобразовать данные Access в форму Word, небольшой VBA может ускорить эту задачу. Сьюзан Харкинс демонстрирует процесс на примере.

Отчеты о доступе представляют собой гибкий и простой в использовании инструмент для обмена данными, но иногда это неправильный инструмент. Например, вы можете обнаружить, что не можете точно воспроизвести существующую бумажную форму в Access, тогда как в Word можете. Теперь вам может быть все равно, как выглядит отчет (бумажная форма), но, возможно, это волнует руководство. В этом случае может потребоваться перенести данные Access в формы Word. Хорошая новость заключается в том, что Word и Access хорошо взаимодействуют друг с другом.

Примечание. Эта информация также доступна для загрузки, включая текстовые файлы, содержащие код VBA из листинга A и листинга B.

Автоматизированное решение требует трех компонентов:

  • Метод идентификации данных Access, которые вы хотите передать
  • Немного кода VBA для автоматизации процесса.
  • Документ Word, представляющий форму, которую нужно заполнить.

Мы будем работать с существующими данными в базе данных "Борей" (образец базы данных, поставляемый с Access). В частности, в примере будут переданы данные из таблицы «Клиенты» через форму в документ Word, показанный на рис. A.

Рисунок A. Выделенные области — это текстовые поля.

Создание формы Word

Форму Word создать не так сложно, как может показаться. Образец формы состоит из пяти простых таблиц, содержащих поля формы. В этом контексте форма — это документ, содержащий заполняемые поля или поля формы, в которые вы вводите информацию. поле – это предопределенная ячейка для ввода и хранения информации.

В форме на рис. A используются пять таблиц с двумя строками для имитации формы. Вам не нужны таблицы, но они помогают организовать данные и управлять ими. Чтобы вставить таблицу, выберите «Вставить» в меню «Таблица», а затем выберите «Таблица». В появившемся диалоговом окне «Вставить таблицу» введите соответствующее количество столбцов и строк (см. рис. B). Для создания этой формы вам понадобятся пять следующих таблиц:

< /tr> < td width="79" valign="top">4
Столбцы Строки
2 2
2 2
1 2
2
2 2

Рисунок B. Определите количество строк и столбцов в каждой таблице.

В примере формы также используется затенение и текст в первой строке, чтобы различать заголовок и фактическую информацию. Вы можете пропустить форматирование, если хотите; для техники это не критично. Если хотите, измените ширину каждого столбца ячейки, используя рисунок A в качестве ориентира.

Пример документа Word содержит соответствующее поле для каждого столбца в таблице "Клиенты" Northwind. Вам не нужно размещать каждое поле; передавать только те данные, которые вам нужны. Однако вы должны связать поле Word с каждым базовым полем Access, которое вы хотите скопировать в форму Word. Чтобы добавить первое поле, выполните следующие действия в форме Word:

  1. Отобразите панель инструментов "Формы", выбрав "Панели инструментов" в меню "Вид" и выбрав "Формы".
  2. В документе щелкните ячейку таблицы под заголовком "Номер клиента".
  3. Нажмите кнопку "Текстовое поле формы" на панели инструментов "Формы".
  4. Дважды щелкните поле, чтобы открыть диалоговое окно "Параметры поля текстовой формы".
  5. Переименуйте поле в fldCustomerID и нажмите "ОК".

Повторите шаги со 2 по 5, чтобы добавить текстовое поле для каждого заголовка, используя следующий список, чтобы назвать каждое поле:

< tr> < /tr> < tr>
Заголовок поля Word Имя поля Соответствующее поле в таблице Access
Номер клиента fldCustomerID CustomerID
Клиент имя_компании CompanyName
Контакт fldContactName Контактное имя
Заголовок fldContactTitle ContactTitle
Улица Адрес fldAddress Адрес
Город fldCity Город
Регион fldRegion Регион
Почтовый индекс fldПочтовый индекс Почтовый индекс
Страна fldCountry Страна
Номер телефона fldPhone Телефон
Номер факса fldFax Факс

Заголовок поля не обязательно должен совпадать с названием поля. Однако обратите внимание, что имена полей Word совпадают с именами полей Access с дополнительным префиксом fld. Нет необходимости называть поля Word так же, как соответствующие им поля Access, но это самодокументируется и упрощает вашу работу.

После добавления всех полей нажмите кнопку «Защитить форму». Это отключит ряд функций, которые не позволят случайным пользователям изменить вашу форму. Затем сохраните форму как CustomerSlip.doc и закройте ее.

Идентификация данных доступа

Самый распространенный метод, который вы, вероятно, будете использовать для идентификации конкретной записи, — это форма доступа. В качестве простого примера используйте существующую форму «Клиенты» в «Борей». Если вы не хотите изменять фактический объект, используйте копию или используйте мастер автоформ для создания быстрой формы на основе таблицы «Клиенты». Если у вас есть форма, привязанная к таблице Customers, добавьте в форму командную кнопку и назовите ее cmdPrint, как показано на рисунке C.

Рисунок C. Кнопка команды «Печать квитанции клиента» выполняет код VBA, который передает данные Access в форму Word.

Оставаясь в представлении «Дизайн», нажмите кнопку «Код», чтобы запустить модуль формы. Добавьте в модуль код из листинга А. Событие Print кнопки cmdPrint выполняет всю работу по копированию данных для текущего клиента из формы «Клиенты» в документ Word (CustomerSlip.doc).

Список А

Частная подписка cmdPrint_Click()

'Распечатать квитанцию ​​для текущего клиента.

Затемнить appWord As Word.Application

Затемнить документ как Word.Document

'Избегайте ошибки 429, когда Word не открыт.

При ошибке возобновить дальше

'Установите объектную переменную appWord на работающий экземпляр Word.

Установить appWord = GetObject(, "Word.Application")

Если номер ошибки <> 0, то

'Если Word не открыт, создайте новый экземпляр Word.

Установите appWord = Новое Word.Application

Set doc = appWord.Documents.Open("C:\WordForms\CustomerSlip.doc", , True)

Установить документ = Ничего

Установите appWord = Ничего

MsgBox Err.Number & ": " & Err.Description

Как это работает

Во-первых, код создает экземпляр Word. Если Word уже открыт, он использует запущенный в данный момент экземпляр. В текущем коде используется выражение Err.Number <> 0, потому что Microsoft печально известна изменением номеров ошибок от версии к версии. Возможно, вы захотите уточнить, изменив 0 на 429 (или соответствующий номер ошибки для вашей версии, если он отличается).

Далее метод Open идентифицирует форму Word (документ). В данном случае это CustomerSlip.doc в папке WordForms на диске C:\. Необязательное значение True открывает файл только для чтения. Обновите путь в соответствии с вашей системой. На самом деле, вы можете подумать о переносе имени файла и пути к константам в разделе «Общие объявления». Таким образом, вам будет проще обновить код, если вы измените имя файла или переместите его.

Блок With копирует данные из каждого поля Access в соответствующее поле Word.После копирования всех данных отобразятся методы Visible и Activate, а затем выберите заполненную форму Word, как показано на рисунке D.

Рисунок D. Форма будет выглядеть так после того, как все данные будут скопированы и заполнены.

Обработка ошибок минимальна. Обязательно тщательно протестируйте производственное решение и учтите все возможные ошибки. Наиболее распространенные ошибки, с которыми вы столкнетесь, — это отсутствие файла Word, неправильный путь или несоответствие имен полей.

Заполнение нескольких форм Word

В настоящее время пример работает только с одной записью — текущей записью формы. Иногда вам может понадобиться передать несколько записей. К счастью, нетрудно улучшить существующий код для обработки нескольких записей и форм, как показано в листинге B.

Список Б

Частная подписка cmdPrint_Click()

'Распечатать квитанцию ​​для текущего клиента.

Затемнить appWord As Word.Application

Затемнить документ как Word.Document

Сначала затемнить как ADODB.Recordset

'Избегайте ошибки 429, когда Word не открыт.

При ошибке возобновить дальше

'Установите объектную переменную appWord на работающий экземпляр Word.

Установить appWord = GetObject(, "Word.Application")

Если номер ошибки <> 0, то

'Если Word не открыт, создайте новый экземпляр Word.

Установите appWord = Новое Word.Application

'Заполнить объект набора записей.

Set rst = New ADODB.Recordset

rst.Open Me.RecordSource, CurrentProject.Connection

'Прокручивайте записи, чтобы заполнить поля формы Word.

Делать, пока нет.EOF

Set doc = appWord.Documents.Open("C:\WordForms\CustomerSlip.doc", , True)

Установить документ = Ничего

Установите appWord = Ничего

MsgBox Err.Number & ": " & Err.Description

Вместо извлечения данных из фактической формы (с использованием идентификатора Me) эта процедура использует объект Recordset для передачи данных из нескольких записей. Обязательно обновите операторы .FieldForm, ссылаясь на набор записей (сначала!) вместо формы доступа (я!), как это делалось в предыдущей процедуре.

В нашем примере свойство RecordSource формы используется для извлечения данных из базового источника данных формы Access (таблицы Customers). Следовательно, форма не синхронизируется с процедурой, поэтому текущая запись формы никогда не меняется. Мы просто используем набор записей формы и кнопку печати, чтобы не усложнять пример. Применяя этот метод к своей базе данных, вы можете использовать любой действительный источник набора записей.

Обратите внимание, что в коде есть два оператора с комментариями ближе к концу блока With. Это действия, которые вы, возможно, захотите предпринять для каждой формы Word. Первый печатает заполненную форму; второй сохраняет форму в текущем каталоге, используя значение первичного ключа текущей записи в качестве имени формы. Вы можете использовать любой из них или оба. Если вы не сохраните текущую запись, Word удалит ее, когда цикл Do While обрабатывает следующую запись.

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

Ярлык для форм Word

Заполнение формы Word данными Access может быть полезным, когда ваши данные находятся в Access и вам необходимо использовать функции форматирования Word для создания нужного отображения. К счастью, процесс прост, независимо от того, публикуете ли вы одну запись или тысячи.

Эта тема заблокирована. Вы можете подписаться на вопрос или проголосовать за него как полезный, но вы не можете отвечать в этой теме.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Ответы (9) 

Взгляните на приведенный ниже код, в значительной степени заимствованный из той ссылки, которую вы разместили.

Sub PopulateWordDocFromExcel()
' Добавьте ссылку на библиотеку Word через VBE > Инструменты > Ссылки > Библиотека объектов Microsoft Word xx.x.
' Создайте папку с именем C:\Temp или отредактируйте имена файлов в коде.
'
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim bWeStartedWord As Boolean

Размер i как целое

При ошибке Возобновить Далее
Установить wrdApp = GetObject(, "Word.Application")
При ошибке Перейти к 0
Если wrdApp ничего не значит
Установить wrdApp = CreateObject(" Word.Application")
bWeStartedWord = True
End If
wrdApp.Visible = True 'необязательно!

Set wrdDoc = wrdApp.Documents.Add 'создайте новый документ
' или откройте существующий документ:
'Set wrdDoc = wrdApp.Documents.Open("C:\Имяпапки\ Filename.docx")

' примеры операций со словами:
With wrdDoc
'копировать данные из A1:A10 в слово doc:
For i = от 1 до 10
.Content.InsertAfter Range("A" & i).Value
.Content.InsertParagraphAfter
Next i

wrdApp.DisplayAlerts = wdAlertsNone
.SaveAs "C:\Temp\MyNewWordDoc.docx", FileFormat:=12 'wdFormatXMLDocument
.Close ' закрыть документ
wrdApp.DisplayAlerts = wdAlertsAll
Конец

If bWeStartedWord Then wrdApp.Quit 'закрыть приложение Word
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub

Если вы хотите сделать что-то еще в Word, просто запишите макрос в Word и переведите код в этот макрос, используя wrdApp вместо Application и wrdDoc вместо ActiveDocument.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

8 человек сочли этот ответ полезным

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

В зависимости от того, что находится в существующем документе Word и где в этом документе вы хотите поместить данные из листа Excel, вам может быть лучше преобразовать документ в основной документ слияния и использовать электронную таблицу в качестве источника данных слияния. .

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

1 человек нашел этот ответ полезным

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

См. следующие страницы веб-сайта Грега Макси:

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку.Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Поскольку вы на самом деле не указали, что именно вы извлекаете из Excel, в какой документ, трудно сделать однозначные предложения. Вы пытаетесь получить данные только из одной записи, чтобы создать (скажем) письмо? В этом случае пользовательская форма будет лучшим подходом. Относительно просто заполнить список пользовательской формы или поле со списком содержимым рабочего листа, отображая только один столбец, и записать значения из этого и других скрытых столбцов в документ по мере необходимости.

Если вы создаете несколько документов одновременно, используйте слияние.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

Спасибо за помощь, теперь у меня новая проблема. Я не могу понять, как заставить его вставить в закладки 5

' Добавьте ссылку на библиотеку Word через VBE > Инструменты > Ссылки > Библиотека объектов Microsoft Word xx.x.

Кроме того, я не копирую списки ячеек, а только определенные, каждая из которых затем вставляется в разные закладки

Я просто немного изменил код, и он правильно скопировал и вставил, но разрушил формат слова doc.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Был ли этот ответ полезен?

Извините, это не помогло.

Отлично! Благодарим за отзыв.

Насколько вы удовлетворены этим ответом?

Спасибо за ваш отзыв, он помогает нам улучшить сайт.

Насколько вы удовлетворены этим ответом?

Спасибо за отзыв.

1) Вам необходимо указать тип при использовании PasteAndFormat, поэтому вы получаете ошибку «аргумент не является необязательным».
См. http://msdn.microsoft.com/en-us/library/office/bb241746(v=office.12).aspx
(MS "Помощь" во всей красе!")< /p>

2) Нет необходимости использовать объект Selection.
В общем, не делайте этого:

Range("J2").Select
Selection.Copy

сделайте это:
Range("J2"). Скопируйте
ваш код будет работать намного быстрее!

Sub PopulateWordDocFromExcel()
' Добавьте ссылку на библиотеку Word через VBE > Инструменты > Ссылки > Библиотека объектов Microsoft Word xx.x.
' Создайте папку с именем C:\Temp или отредактируйте имена файлов в коде.
'

Затемнить wrdApp как Word.Приложение
Dim wrdDoc As Word.Document
Dim wdBmRng As Word.Range

Размерьте bWeStartedWord как логическое значение
Размерьте i как целое число

При ошибке Возобновить Далее
Установить wrdApp = GetObject(, "Word.Application")
При ошибке Перейти к 0
Если wrdApp ничего не значит
Установить wrdApp = CreateObject(" Word.Application")
bWeStartedWord = True
End If
wrdApp.Visible = True 'необязательно!

Установите wrdDoc = wrdApp.Documents.Open("C:\Paul Davis\mkt.docx")
' или откройте существующий документ:
'Установите wrdDoc = wrdApp.Documents. Открыть("C:\ИмяПапки\ИмяФайла.docx")

' примеры операций со словами:
С помощью wrdDoc
' скопировать название компании462
При ошибке возобновить следующий 'или может используйте при ошибке GoTo ExitPoint
Установите wdBmRng = wrdDoc.Bookmarks("bkname").Range
При ошибке GoTo 0
Если wdBmRng не является ничем, то
wdBmRng. Text = Range("J2").Value
Else
MsgBox "Закладка не найдена!"
Остановить для отладки или использовать Exit Sub и т. д.
End If
wrdApp.DisplayAlerts = wdAlertsNone
.SaveAs "C:\Paul Davis\ mkt.docx", FileFormat:=12 'wdFormatXMLDocument
.Close ' закрыть документ
wrdApp.DisplayAlerts = wdAlertsAll
End With

ExitPoint:
If bWeStartedWord Then wrdApp.Quit 'закрыть приложение Word
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Когда вам нужно перенести запись данных в Excel, форма Word и немного VBA упрощают процесс.

Передача данных часто выполняется массовыми заданиями с несколькими записями и полями данных. Но иногда вам нужно будет передавать только одну запись за раз. Например, вам может потребоваться перенести данные из формы заказа с вводом данных в большую базу данных по закупкам. В этом случае вы передаете данные по мере обработки каждого заказа, по одному. Когда вы сталкиваетесь с такой задачей, вы можете использовать код VBA — и вы можете настроить все это за 10 быстрых шагов.

1. Проанализируйте свои потребности

Задача переноса состоит из нескольких частей. Сценарии уникальны, но компоненты в целом одинаковы:

  • данные, которые вы передаете
  • Файл исходный, содержащий данные
  • Файл назначения, в который вы передаете данные
  • канал передачи, используемый для переключения; обычно это код

Прежде чем что-то делать, вам нужно определить эти четыре компонента.

В нашем примере для сбора данных (входных значений) используется форма Word, но вы можете использовать веб-форму, пользовательскую форму Excel или другой формат. Код и процесс передачи будут в основном одинаковыми, независимо от формата ввода. В этом упражнении речь идет не столько об источнике, сколько о возможности переноса записей по одной в конечный файл.

2: Определите формат назначения

Убедившись, что у вас есть все элементы, необходимые для начала работы, определите физическую динамику целевого файла. Обычно этот формат предопределен. Мы перенесем два текстовых элемента, название компании и номер телефона, запись за записью, в простую таблицу Excel, показанную на рис. A.

Рисунок А

Наш образец листа намеренно сделан простым. Передача данных — это работа; количество полей обычно не имеет значения.

3: Определите целевые типы данных

Как только вы узнаете формат, обратите внимание на типы данных, которые ожидает получить исходный файл. Возможно, вам придется преобразовать типы данных перед фактической передачей данных. Мы не будем этого делать в этом примере. Оба поля на этом листе назначения являются текстовыми в формате «Общий». Но важно записать эту информацию перед началом, потому что данные могут нуждаться в специальной обработке. Например, строки и даты должны быть разделены свойством.

4: обратите внимание на расположение целевого файла

Следующая часть информации, которая вам понадобится, — это путь к целевому файлу. В этом примере оба файла будут на одном диске, но в разных папках.Некоторым данным приходится преодолевать большие расстояния, чтобы попасть из источника в файл назначения, и вам нужно знать каждый узел на этом пути. Если вы используете сеть, вам может потребоваться закодировать специальные разрешения и пароли для использования в пути. Целевая рабочая книга нашего примера находится в папке E:\Examples и не защищена паролем.

5: Создайте исходную форму

Если вам повезет, у вас будет некоторая гибкость при выборе исходного формата (но не всегда). В этом случае мы будем использовать простую форму Word, показанную на рисунке B, для сбора двух частей данных.

Рисунок Б

Используйте поля формы Word для сбора данных.

Форма Word — это документ, который содержит пустые поля, называемые полями. Каждое поле представляет собой предопределенную ячейку, в которой хранятся вводимые данные. Чтобы создать образец формы Word, вставьте два текстовых поля в пустой документ Word следующим образом:

  1. Перейдите на вкладку "Разработчик", а затем выберите поле ab в раскрывающемся списке "Устаревшие инструменты" в группе "Управление" (обведено кружком на рис. B). В Word 2003 выберите "Панели инструментов" в меню "Вид" и выберите "Формы", где вы найдете элемент управления "Поле текстовой формы".
  2. Нажмите «Свойства» в группе «Элементы управления» или дважды щелкните поле, чтобы отобразить его свойства.
  3. Введите txtCompanyName в свойство Bookmark, как показано на рисунке C.
  4. Нажмите "ОК".
  5. Повторите шаги с 1 по 4, введя txtPhone на шаге 3.
  6. Сохраните форму.

Рисунок C

Поле текстовой формы является устаревшим инструментом в версиях с лентой.

6: Добавьте базовый код

Чтобы добавить код, переносящий одну запись из полей в пример книги, выполните следующие действия:

  1. Открыв форму Word, нажмите [Alt]+[F11], чтобы запустить редактор Visual Basic (VBE).
  2. В меню "Вставка" выберите "Модуль".
  3. Введите код из листинга А.
  4. Сохраните модуль и вернитесь к форме Word.

Листинг A: Макрос передачи

7: Добавьте способ выполнения макроса

Вы можете добавить кнопку макроса на ленту или даже кнопку команды в документ. Но используя поля формы, вы можете обойти инструменты интерфейса и позволить одному из полей выполнить макрос следующим образом:

  1. Дважды щелкните поле телефона (txtPhone), чтобы открыть страницу его свойств.
  2. В раскрывающемся списке «Выход» выберите макрос передачи из листинга A, TransferToExcel, как показано на рисунке D.
  3. Нажмите "ОК".

Нажатие [Tab] для выхода из поля телефона вызовет функцию TransferToExcel(), которая скопирует текст из полей названия компании и телефона в файл Sales.xlsx. Применяя этот код в своей работе, обязательно обновите путь соответствующим образом.

Рисунок D

Выберите макрос передачи в раскрывающемся списке «Выход».

8: Защитите документ Word

Перед использованием формы Word ограничьте ее использование, ограничив изменения полей формы следующим образом:

  1. Перейдите на вкладку "Разработчик", а затем нажмите "Ограничить редактирование" в группе "Защитить". В Word 2003 нажмите "Защитить" на панели инструментов формы.
  2. В появившейся области задач щелкните Разрешить только этот тип редактирования в этом документе.
  3. В раскрывающемся списке выберите «Заполнение форм», как показано на рис. E.
  4. Нажмите "Да, включить защиту".
  5. Введите пароль дважды. Или оставьте обе записи пароля пустыми, если вам не нужна защита паролем.
  6. Нажмите "ОК".

Рисунок E

Включить защиту, чтобы ограничить ввод данных в поля формы.

9: Используйте форму

Все основные компоненты готовы, и вы готовы использовать форму. Для этого перейдите в первое поле (при необходимости) и введите название компании. Нажмите [Tab] и введите номер телефона, как показано на рисунке F. После ввода номера телефона нажмите [Tab], чтобы ввести код. Затем проверьте книгу Excel Sales.xlsx. Как видно на рисунке G, код передал запись, как и ожидалось. Код добавляет каждую запись как переданную, что позволяет разместить существующие данные.

Рисунок F

Использовать поля формы для сбора данных очень просто.

Рисунок G

Наш код макроса скопировал данные из формы Word на лист Excel.

10: Остальная часть истории

Макрос в листинге А описывает основы. Он идентифицирует данные и передает их как есть в целевую книгу. Эта часть характерна почти для всех задач переноса, когда вы перемещаете одну запись за раз. Есть еще многое, что нужно учитывать. Например, нет проверки данных; нет ничего, что заставляло бы пользователей вводить действительный номер телефона в правильном формате. Чтобы обеспечить согласованность и достоверность данных, включите код, который проверяет данные (обычно перед передачей).

Возможно, вы также захотите включить подтверждающее сообщение, в котором пользователям будет предложено подтвердить перенос перед фактическим выполнением кода. Сейчас перевод автоматический. Обработка ошибок — голая кость.Вам нужно будет тщательно протестировать свой код на наличие всех возможных проблем. Это лишь некоторые из областей, которые вы хотите настроить.

Но если вам нужна простая форма для личного использования, выполните следующие действия.

Когда вы слышите о заполняемых формах, вы, вероятно, думаете о документах Adobe и PDF. Однако, если у вас есть Microsoft Office, вы можете добиться аналогичного результата с помощью MS Word.

<р>1. Включить вкладку «Разработчик». Откройте Microsoft Word, затем перейдите на вкладку «Файл» > «Параметры» > «Настроить ленту» > проверьте вкладку «Разработчик» в правом столбце > нажмите «ОК».


Откроется вкладка разработчика. В разделе «Элементы управления» есть около восьми различных параметров, которые можно добавить в документ Word: Форматированный текст, Обычный текст, Изображение, Галерея стандартных блоков, Флажок, Поле со списком, Раскрывающийся список и Выбор даты.


<р>2. Вставьте элемент управления. Нажмите на элемент управления, и он появится там, где находился курсор.

В приведенном ниже примере два текстовых поля вставлены в простую таблицу для имени и фамилии.


По умолчанию каждый элемент управления имеет собственный текст-заполнитель. Для элемента управления с простым текстом это «Щелкните или коснитесь здесь, чтобы ввести текст».

<р>3. Отредактируйте текст-заполнитель. Настройте текст-заполнитель для любого элемента управления, нажав Режим разработки.

Вокруг заполнителя появятся синие заполнители. Выделите текст и измените его на то, что вам нравится. Нажмите на

Снова нажмите кнопку "Режим дизайна", чтобы выйти из режима.


<р>4. Настройте элементы управления контентом. Выделите новое поле формы и нажмите «Свойства» прямо под кнопкой «Режим разработки».


Здесь вы можете дать элементу управления заголовок, изменить цвет, стиль текста и указать, можно ли редактировать или удалять элемент управления. В самом низу находятся параметры, специфичные для элемента управления, поэтому, если у вас настроен элемент управления простым текстом, вы можете контролировать, сколько строк вы хотите разрешить. Последний вариант полезен, если вам нужно, чтобы кто-то набрал абзац текста.

Обычный текст и форматированный текст

В элементе управления форматированным текстом вы можете изменить настройки шрифта/цвета для каждого слова отдельно, тогда как элемент управления обычным текстом применит форматирование ко всему тексту. Элементы управления с обычным текстом допускают изменение жирного шрифта, шрифта или цвета.

Добавить раскрывающийся список

Если вам нужно добавить раскрывающееся поле в форму, вставьте раскрывающийся список. Выделите поле и снова перейдите в «Свойства», чтобы добавить настраиваемые параметры раскрывающегося списка.

По умолчанию отображаемое имя и значение одинаковы, но при желании их можно изменить. На самом деле нет причин изменять это значение, если только вы не пишете макросы Word и не обращаетесь к элементам управления в коде.


Подсказка: если раскрывающееся поле не отображается, убедитесь, что вы находитесь вне элемента управления "Режим разработки".

Раскрывающийся список и поле со списком

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

Выбор даты

Элемент выбора даты работает так же, как и любой другой инструмент выбора даты, который вы, вероятно, использовали раньше. Когда вы щелкаете по нему, появляется календарь, и вы можете просто щелкнуть дату, чтобы выбрать ее.


Picture Control позволяет пользователю легко загружать или вставлять файлы изображений.

Дополнительный совет: убедитесь, что вы используете таблицы для создания хорошо организованных форм.

Чтобы получить дополнительные технические советы, нажмите здесь или узнайте о наших услугах ИТ-поддержки для предприятий

Подпишитесь на оценку сети и безопасности

У каждой компании свои проблемы с сетью и безопасностью. Наша оценка проверяет вашу текущую настройку, диагностирует риски и предлагает решения.

Оценка безопасности

Контрольный список наших управляемых услуг

Десять вещей, которые вы должны знать об управляемых услугах ИТ-провайдера. Посмотрите, как другие справляются с ИТ-решениями.

Контрольный список

Управляемые ИТ-услуги

Местная юридическая фирма доверяет сетевой хостинг и поддержку ИТ-решениям

Тимони Нокс обратился к нам с просьбой провести оценку их существующей сети, выявив несколько проблем с настройкой и дизайном. Мы дали рекомендации не только решить их проблемы с производительностью, но и настроить фирму на долгосрочный успех. В сочетании с нашей сильной репутацией, поддерживающей юридическую отрасль Филадельфии, Тимони Нокс с этого момента рассматривал ITS как своего надежного партнера по ИТ-поддержке.

Облачный хостинг

Стратегический переход к облаку повышает безопасность сети для кровельной компании с полным спектром услуг

После того, как компания DDP Roofing столкнулась с неадекватной поддержкой и медленным откликом от своего предыдущего управляемого ИТ-провайдера, компания DDP Roofing наняла ИТ-решения, чтобы начать новую жизнь. Мы перенесли их сеть в наше частное облако, чтобы устранить оставшиеся уязвимости в системе безопасности, и настроили индивидуальную настройку с помощью надежного решения для резервного копирования данных и Office 365 для их пользователей.

Разработка приложений

Фирма медицинского образования добилась значительного роста благодаря полной поддержке ITS

Компания IT Solutions совместно с Millennium Medical разработала специальное веб-приложение с нуля для поддержки своих нишевых бизнес-операций. Это динамичное решение обеспечило явное конкурентное преимущество на рынке, увеличив доход, повысив эффективность работы персонала и удерживая расходы под контролем.

Читайте также: