Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 5.00
ivaMadDog
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 10
#1

Элементы управления на листе документа Word - VBA

28.03.2011, 22:50. Просмотров 5651. Ответов 27
Метки нет (Все метки)

Существует документ (Word 2003) состоящий из одного листа. Данный лист имеет подложку-картинку (бланк для заполнения). На листе создано множество элементов управления (ЭУ - Label), которые заполняются или очищаются в результате работы макроса. При открытии документа создается меню с двумя командами: 1 - заполнить бланк, 2 - очистить. Первая команда вызывает форму, через которую собственно и происходит перенос данных на элементы управления листа.

Как обратиться к семейству всех ЭУ, чтобы в цикле выполнить их очистку.


зы: плохо знаком с моделью текстового редактора, в электронной таблице я делал так:
Visual Basic
1
2
3
  For x = 1 To 542
    Лист1.OLEObjects(x).Object.Caption = ""
  Next x
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2011, 22:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Элементы управления на листе документа Word (VBA):

Элементы управления на листе Excel меняются - VBA
Очень прошу помочь с решением следующей проблемы: На листе Excel два листбокса, в которых на определенные события меняется диапазон...

Расположите на рабочем листе элементы управления - VBA
Расположить на рабочем листе элементы управления как показано на рисунке. Список заполнить произвольными названиями товара. Изменить...

Добавление срок в таблицу Word при заполнении документа Word из данных Excel - VBA
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании которого заполняется документ Word по...

Кто нибудь делал вращающийся 3Д-кубик из линий объектов 'Рисование' на листе документа ? - VBA
Доброго времени суток на циферблате! Кто нибудь делал вращающийся 3Д-кубик из линий объектов 'Рисование' на листе документа. С учетом...

Вывод штрих-кода на листе MS Word - VBA
Добрый день! Подскажите, необходимо на форме Ворда выводить штрих-код. Никак у меня это не получается сделать.Я зарегил в ситеме...

Замена определенного текста на листе Word из пользовательской формы - VBA
Здраствуйте. Нужно реализовать такую ситуацию. Есть документ в котором часть текста не меняется. Другую часть нужно изменить типо имя...

27
Alex77755
10666 / 3241 / 535
Регистрация: 13.02.2009
Сообщений: 9,559
29.03.2011, 00:42 #16
ivaMadDog,
Ты бы приложил не "вернисаж", а файлики.
Смотришь и поняли бы, что ты хочешь!
0
ivaMadDog
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 10
29.03.2011, 00:43  [ТС] #17
Alex77755, мне не столь важно "где какой". Мне бы примерчик кода для обращения, допустим, к Label100, но через индекс. Остальное я сам покапаю...надеюсь )

прикладываю файлики
0
Busine2009
Заблокирован
29.03.2011, 00:44 #18
Цитата Сообщение от ivaMadDog Посмотреть сообщение
Busine2009, скажу честно, не совсем могу разобрать код
Москва не сразу строилась - нужно время, чтобы понять.
Цитата Сообщение от ivaMadDog Посмотреть сообщение
Busine2009, но при подстановке выбивает ошибку в 5ой строке: "Запрашиваемый номер семейства не существует"
всё правильно - это означает, что нет поля с таким-то номером.
0
Alex77755
10666 / 3241 / 535
Регистрация: 13.02.2009
Сообщений: 9,559
29.03.2011, 00:45 #19
Трудно понять вопрос...
На листе ворда лабел?
Как он туда попал?
0
ivaMadDog
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 10
29.03.2011, 00:54  [ТС] #20
Выкладываю файлики, фоновый бланк убрал, так как размер файла с ним был 2 метра.
0
Вложения
Тип файла: rar Doc111.part01.rar (97.7 Кб, 14 просмотров)
Тип файла: rar Doc111.part02.rar (11.7 Кб, 12 просмотров)
Alex77755
10666 / 3241 / 535
Регистрация: 13.02.2009
Сообщений: 9,559
29.03.2011, 01:26 #21
Обратиться то можно так:
Visual Basic
1
2
3
4
5
6
7
8
9
Public Sub NAD2()
Dim Q
Dim J
For J = 1 To 8
Set Q = ActiveDocument.Shapes("Label" & J) ' это для просмотра свойств сделал
ActiveDocument.Shapes("Label" & J).Select
Debug.Print Q.Name
Next
End Sub
Только прикол в том, что в режиме редактора свойство Caption есть и можно менять.
А программно пока не пойму как добраться до него
0
Busine2009
Заблокирован
29.03.2011, 07:56 #22
Вcего в Word есть 4 способа обращения к элементам управления, находящимся непосредственно в документе (ещё элементы управления могут находиться на пользовательской форме).
  1. Если элемент управления находится в тексте (щ. правой кн. мыши по элементу управления – Формат объекта… - Положение Обтекание: в тексте):
    Visual Basic
    1
    2
    3
    
    Sub P1()
    ActiveDocument.InlineShapes(1).OLEFormat.Object.Text = "text1"
    End Sub
  2. Если элемент управления находится не в тексте (щ. правой кн. мыши по элементу управления – Формат объекта… - Положение – Любое положение, кроме в тексте):
    Visual Basic
    1
    2
    3
    
    Sub P2()
    ActiveDocument.Shapes(1).OLEFormat.Object.Text = "text2"
    End Sub
  3. Обращение к элементу управления через объект Field:
    Visual Basic
    1
    2
    3
    
    Sub P3()
    ActiveDocument.Fields(1).Result.Text = "text3"
    End Sub
  4. Если код писать в самом документе (Project(Имя документа) – ThisDocument):
    Visual Basic
    1
    2
    3
    
    Sub P4()
    Me.TextBox1.Text = "text4"
    End Sub
1
Ципихович Эндрю
1359 / 317 / 16
Регистрация: 10.04.2009
Сообщений: 4,931
29.03.2011, 08:45 #23
Цитата Сообщение от ivaMadDog Посмотреть сообщение
к созданным объектам
перечислете что за объекты?
0
Alex77755
10666 / 3241 / 535
Регистрация: 13.02.2009
Сообщений: 9,559
29.03.2011, 12:03 #24
Но иметь столько Лабелов на одной странице - просто жуть.
Документ тормозит со страшной силой и часто вылетает с ошибками.
Надо применять другие варианты.
Пробовал с таблицами - Вард вводит ограничения на количество ячеек в строке и на минимальную ширину ячейки. Так, что тоже не очень аккуратно получается. Зато быстрей намного и не тупит

Но если хочешь оставить свой вариант, то можно так:

Visual Basic
1
2
3
4
5
6
7
Public Sub ClearForm()
Dim Q As Object
  For x = 1 To 542
  Set Q = ActiveDocument.Shapes("Label" & x)
   Q.OLEFormat.Object.Caption = ""
  Next x
End Sub
1
ivaMadDog
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 10
29.03.2011, 12:45  [ТС] #25
Busine2009, +100 (можно ссылку на источник, если такой имеется?).
Спасибо огромное.
Подошел второй вариант, с небольшой поправкой для Label
Visual Basic
1
ActiveDocument.Shapes(100).OLEFormat.Object.Caption = "Какой-то текст"
Всем участником за помощь БОЛЬШОЕ СПАСИБО!


Есть небольшая поправочка, индексация элементов управления начинается с 2. А первый индекс я так понимаю принадлежит фоновому бланку?! Если не прав - поправьте.
0
Busine2009
Заблокирован
29.03.2011, 18:14 #26
Цитата Сообщение от ivaMadDog Посмотреть сообщение
можно ссылку на источник, если такой имеется?
источника нет - сам сделал вывод.
0
Ципихович Эндрю
1359 / 317 / 16
Регистрация: 10.04.2009
Сообщений: 4,931
29.03.2011, 18:23 #27
Цитата Сообщение от ivaMadDog Посмотреть сообщение
Есть небольшая поправочка, индексация элементов управления начинается с 2. А первый индекс я так понимаю принадлежит фоновому бланку?! Если не прав - поправьте.
Вероятно 1 индекс это фрейм на котором всё лежит, проверьте - Элемент управления 1 Делете и посмотрие что удалится
0
Alex77755
10666 / 3241 / 535
Регистрация: 13.02.2009
Сообщений: 9,559
29.03.2011, 18:41 #28
Элемент управления 1 Делете и посмотрие что удалится
Радикально!
А не проще посмотреть свойства?
0
29.03.2011, 18:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2011, 18:41
Привет! Вот еще темы с ответами:

Напечатать на листе отсортированный по имени список всех документов Word из выбранной папки - VBA
Всем добрый день. Очень сильно нужна ваша помощь. Буду благодарен за любую помощь. Нужно создать 9 макросов: 1. Создать макрос,...

Разбиение файла Word на отдельные листы при двусторонней печати по две страницы на листе - VBA
Добрый вечер. Прошу помощи, так как основательно запутался в решении данной задачи при моих ограниченных познаниях в VBA. Она...

Редактирование документа word - VBA
Доброго дня, в цикле создается n-документов word, мне необходимо эти документы не создавать по отдельности, а добавлять в один. Спасибо.

Word: печать документа - VBA
Есть документ с двумя листами, необходимо распечатать последний лист с оборотом из другого файла... Пробовал через дуплекс, не...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru