Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2015, 13:42   #1
DBEER
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 76
По умолчанию Программное управление кодом поля

Коллеги, кто знает, где описано, как из VBA управлять/писать .Fields....Code.Text, и чтобы при этом еще и работало.
С песнями и плясками через штатный интерфейс Word`a создаю поле, где в коде:
(1) { = { PAGE } + 2 } (по кр.мере, это видно глазами) , когда руками вкл. видимость кодов в поле
при отладке в Watch и Immediate видно что-то типа:
(2) = □ PAGE □ + 2
если прогаммно писать в .Fields....Code.Text то, что в строке (1), то поле не работает ("..ошибка..")
То же самое, если, например, запомнить в varSTR содержимое .Fields....Code.Text, а потом обратно его же и запихать туда.

Потребность возникла при упражнениях с нумерацией страниц при программной вставке/удалении новых разделов
(манипулирую колонтитулами "Как в предыдущем"= False; "различать кол..лы 1 стр. и послед"=False).
После нескольких телодвижений "слетает" поле с Нум.страниц в том разделе, что после вставленного.
При этом остальные конструкции колонтитула живы.
КОроче, пока найдется первопричина, я захотел просто программно восстановить формулу/код в этом поле.
Поле программно в отладчике трогаю, оно есть, но не отображается. Хочу написать туда снова код поля, а оно всё ошибочно!! Как жить дальше?!!
DBEER вне форума Ответить с цитированием
Старый 15.05.2015, 16:49   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

То, что в поле отображается как фигурные скобки — это символы Chr(19) и Chr(21) для открывающей и закрывающей скобок соответственно. Так что просто так задать поле текстом не получится. Конечно, можно последовательно добавлять поля, сначала поле { = + 2}, потом внутрь него полe { PAGE ), но геморрой это ещё тот:
Код:
  Dim oRng As Range
  Set oRng = ActiveDocument.Range
  Dim oFld As Fied
  Set oFld = Selection.Fields.Add(Selection.Range, wdFieldEmpty, "= + 2")
'  Диапазон, куда вставлять новое поле
  oRng.SetRange oFld.Code.Start, oFld.Code.Start
'  Перемещаем начало диапазона после знака "="
  oRng.Move wdCharacter, 3
  oFld.Code.Fields.Add oRng, wdFieldPage, ""
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное управление в гаджете valerij Компьютерное железо 1 22.11.2013 10:52
Программное управление кэшем Sibedir Операционные системы общие вопросы 3 02.03.2013 16:34
Программное управление светодиодом Jacobson Общие вопросы Delphi 5 14.05.2010 23:02
Сервис - программное управление. Air Win Api 3 23.06.2008 13:09