Консультация № 178691
27.05.2010, 09:14
35.77 руб.
0 1 1

Уважаемые эксперты подскажите, почему не присваивает значение объекту, вопросы по тексту скрипта:
On Error Resume Next 'данная строка даёт возможность при появлении ошибки двигать-ся дальше
Set Поле = ActiveDocument.FormFields("Дата")
'требуется если пользователь поле удалил
If Err.Number = 5941 Then Exit Sub 'условие, если возникла ошибка с номером ..., тогда ...
Поле.Select 'выделить объект - поле с именем ...
Поле.Result = "___" & Year(Now) & " г." 'присваивание объекту - полю значения ... ??????
Поле.Result.Text = "___" & Year(Now) & " г." 'присваивание объекту - полю значения ... ??????
Set Поле = Nothing 'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта

Что не так???. Спасибо Эндрю

Обсуждение

Неизвестный
27.05.2010, 16:11
общий
это ответ
Здравствуйте, Ципихович Эндрю.
FormFields - это поля форм. Добавляются они в документ, следующим образом: нужно в меню выбрать пункт "Вид", далее "Панели инструментов" и поставить галочку напротив пункта "Формы". Появится панель инструментов, к элементам которой, если их добавить в документ, можно будет обращаться указанным Вами способом. Если поля добавлены с панели иструментов "Элементы управления", либо с помощью пункта меню "Вставка" - "Поле", то к этому элементу из VBA нужно обращаться с помощью оператора Fields. В Вашем случае поле скорее всего относится к последнему случаю. К элементам данной коллекции нельзя обращаться по имени, только с помощью индекса. Следовательно Вам нужно изменить код следующим образом:
Код:

ИндексПоля = ActiveDocument.Selection.Fields(1).Index ' индекс первого (нужно изменить, если требуется другое поле) поля в выделении
Set Поле = ActiveDocument.Fields(ИндексПоля)
Поле.Select ' выделить поле
Поле.Result.Text = "____" & Year(Now) & " г." ' присваивание значения полю
Set Поле = Nothing ' освобождение памяти
Форма ответа