Я занимаюсь анкетированием (сбором информации) при помощи файлов Ворд. Для этого прошу респондентов заполнить некоторые поля (элементы управления). Снимаю значения операторами
str1 = Documents(strFile).TextBox1.Value str1=Documents(strAnkFile).optionbutton1.Value Сложность в том, что таких елементов управления у меня около 300. Приходится просмотреть имя каждого, а потом написать 300, почти одинаковых строк. Вопрос: Знает ли кто-нибудь способ обратиться ко всем элементам сразу. З. Ы. Для формы всё легко, пишем строку For Each Y In UserForm2.Controls и обращаемся ко всем элементам сразу. А как это сделать если элемент управления находится не в форме а в документе? |
А какие проблемы?
Поля можно выделять 2-мя способами: 1) Объявлять ЗАКЛАДКИ; 2) определять ТЕКСТОВЫЕ ПОЛЯ (панель "Формы"). (На деле это одно и то же, поскольку имена текстовых полей являются теми же закладками.) А дальше - типа Dim ixBmk As Bookmark For Each ixBmk In ActiveDocument.Bookmarks ixBmk.Select ... ' здесь работа с объектом Selection Next ixBmk Каждую закладку можно дополнительно проверять на ixBmk.Name |
Раз эта тема хоть кого-то заинтересовала, то отвечаю сам себе. За последний год я до мелочей отработал технологию анкетирования. Это самозаполняемые анкеты. Формой для ввода и контейнером содержащим данные пользователя является файл 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 У первого способа много недостатков. Если нужны пояснения - пишите. Я на этом собаку съел. |
Время: 23:20. |
Время: 23:20.
© OSzone.net 2001-