Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.69/32: Рейтинг темы: голосов - 32, средняя оценка - 4.69
ivaMadDog
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 10
1

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

28.03.2011, 22:50. Просмотров 5888. Ответов 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
Ответы с готовыми решениями:

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

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

Постраничная разбивка документа Word. Сохранение под разными именами.(данные из документа)
ТЗ: Сделать так чтобы данные из Excel перетягивались в Word, При этом файл...

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

Вывод штрих-кода на листе MS Word
Добрый день! Подскажите, необходимо на форме Ворда выводить штрих-код. Никак...

27
Alex77755
10738 / 3311 / 549
Регистрация: 13.02.2009
Сообщений: 9,746
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
Ципихович Эндрю
1410 / 320 / 28
Регистрация: 10.04.2009
Сообщений: 4,990
29.03.2011, 08:45 23
Цитата Сообщение от ivaMadDog Посмотреть сообщение
к созданным объектам
перечислете что за объекты?
0
Alex77755
10738 / 3311 / 549
Регистрация: 13.02.2009
Сообщений: 9,746
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
Ципихович Эндрю
1410 / 320 / 28
Регистрация: 10.04.2009
Сообщений: 4,990
29.03.2011, 18:23 27
Цитата Сообщение от ivaMadDog Посмотреть сообщение
Есть небольшая поправочка, индексация элементов управления начинается с 2. А первый индекс я так понимаю принадлежит фоновому бланку?! Если не прав - поправьте.
Вероятно 1 индекс это фрейм на котором всё лежит, проверьте - Элемент управления 1 Делете и посмотрие что удалится
0
Alex77755
10738 / 3311 / 549
Регистрация: 13.02.2009
Сообщений: 9,746
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

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

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

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


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

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

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