VBA - VBA
|
BOLT
Сообщения: n/a |
Я занимаюсь анкетированием (сбором информации) при помощи файлов Ворд. Для этого прошу респондентов заполнить некоторые поля (элементы управления). Снимаю значения операторами
str1 = Documents(strFile).TextBox1.Value str1=Documents(strAnkFile).optionbutton1.Value Сложность в том, что таких елементов управления у меня около 300. Приходится просмотреть имя каждого, а потом написать 300, почти одинаковых строк. Вопрос: Знает ли кто-нибудь способ обратиться ко всем элементам сразу. З. Ы. Для формы всё легко, пишем строку For Each Y In UserForm2.Controls и обращаемся ко всем элементам сразу. А как это сделать если элемент управления находится не в форме а в документе? |
|
Отправлено: 14:54, 03-03-2003 |
Пользователь Сообщения: 85
|
Профиль | Отправить PM | Цитировать А какие проблемы?
Поля можно выделять 2-мя способами: 1) Объявлять ЗАКЛАДКИ; 2) определять ТЕКСТОВЫЕ ПОЛЯ (панель "Формы". (На деле это одно и то же, поскольку имена текстовых полей являются теми же закладками.) А дальше - типа Dim ixBmk As Bookmark For Each ixBmk In ActiveDocument.Bookmarks ixBmk.Select ... ' здесь работа с объектом Selection Next ixBmk Каждую закладку можно дополнительно проверять на ixBmk.Name |
Отправлено: 21:50, 05-09-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
BOLT
Сообщения: n/a |
Раз эта тема хоть кого-то заинтересовала, то отвечаю сам себе. За последний год я до мелочей отработал технологию анкетирования. Это самозаполняемые анкеты. Формой для ввода и контейнером содержащим данные пользователя является файл Word.
Можно использовать 2 конструкции: Элементы управления и Поля. В первом случае обработка идёт так: Dim iShape As Object For Each iShape In myDoc.InlineShapes ' Начали обрабатывать элементы управления If iShape.Type = wdInlineShapeOLEControlObject Then ' это элемень управления, а не какая-нибудь там картинка intA = iShape.OLEFormat.Object.Value End If Next iShape Во втором случае Dim fldAnswer As FormField For Each fldAnswer In myDoc.FormFields 'Начали обрабатывать поля intB = fldAnswer.Result Next fldAnswer У первого способа много недостатков. Если нужны пояснения - пишите. Я на этом собаку съел. |
Отправлено: 10:56, 08-09-2003 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - VBA и Word | foxik | Программирование и базы данных | 5 | 28-03-2009 20:37 | |
VBA - Access и VBA | Scorpion666 | Программирование и базы данных | 6 | 01-04-2007 00:18 | |
VBA - Corel и VBA | Sanchos | Программирование и базы данных | 1 | 16-03-2007 11:30 | |
VBA - Вопрос по VBA | iliag3 | Программирование и базы данных | 1 | 14-12-2004 16:39 | |
VBA - Timer в VBA | Witaleey | Программирование и базы данных | 1 | 29-08-2003 15:26 |
|