Форматирование поля пользователя

Автор ОлегV, 23 апреля 2024, 10:25

0 Пользователи и 1 гость просматривают эту тему.

ОлегV

Здравствуйте. Подскажите пожалуйста.
Можно ли (а если можно, то как?) с помощью макроса изменить, например размер и цвет текста, который содержится в поле пользователя?  И можно ли с помощью макроса изменять формат текста конкретного экземпляра поля пользователя , если их в документе несколько с одним именем?

economist

Поле пользователя - это которое текстовое (Ctrl+F2) или контрол Форма/Текстовое поле? Или один из вариантов ЭУС?

У всех все по-разному меняется макросом. Но поля которые по Ctrl+F2 c одинаковым именем отличить друг от друга макрос сможет только по уник. непустому содержимому. Чтобы поля вставлялись с уник. именами - можно использовать Автотекст. Ну или задавать ручками.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ОлегV

Цитата: economist от 23 апреля 2024, 15:46Поле пользователя - это которое текстовое (Ctrl+F2)
Да, именно оно - Поле пользователя во  вкладке "Переменные".
Если нельзя обратиться к каждому экземпляру, то может быть есть способ как изменить формат всех полей сразу?

Или вот еще, можно ли с помощью макроса выделить конкретное поле пользователя или же все поля под одним именем? Или выделить закладку, можно же создать закладку, а закладки именованные, значит можно обратиться к конкретной закладке, внутри которой может находиться нужное поле. Под "Выделить" я подразумеваю выделение, которое мы обычно делаем курсором для копирования части текста.

economist

Цвет подсветки всех полей можно изменить в Настройках LO.

Уник. имена Полям можно присвоить макросом или ручками (или угадать по содержимому).

Вообще работа с этими полями макросом, через MasterFields - отдельный геморрой. Примеров кода мало, функционал не менялся с 1997 года (примерно) и юзеров единицы.

Есть ещё поля UserDefined или CustomProperties в свойствах файла, их легче читать-форматировать макросом.

Как вы хотите отформатировать поля? Как они будут заполняться? Не лучше ли использовать Слияние по Ctrl+Shift+F4?
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ОлегV

Цитата: economist от 24 апреля 2024, 20:51Как вы хотите отформатировать поля? Как они будут заполняться?

  Поле содержит абзац. Я хочу чтобы текст который содержит поле при некоторых условиях был невидим. Менять содержимое поля я научился, и я могу его сделать пустым, но в этом случае абзац занимает 1 строчку и в документе остается ненужный пустой интервал, если бы я мог изменить размер шрифта текста до минимума, меня бы устроило такое решение, но я пока не знаю , как это сделать.
   По поводу уникальных имен полей пользователя я уже понял, что здесь такого нет, только перебором можно найти. И я могу это сделать, но тогда другая проблема возникает. Я не знаю , как определенное поле выделить курсором. Отформатировать выделенный текс я научился, как выделить его - не понимаю ??? В экселе с этим проще, там можно к любой ячейке обращаться,делать ее активной или даже к диапазону ячеек.
 Я еще думал через закладки это сделать, к ним  можно непосредственно по имени обратиться, но опять та же проблема, как выделить курсором закладку).

economist

#5
А почему не используете штатный функционал Скрытый/Условный текст/абзац/раздел? Это очень мощный инструмент для "хирургии налету", например, в Договорах.
 
Скрытый/Условный текст/абзац/раздел можно скрывать/показывать макросом, по событию, или при Слиянии/Рассылки (без макросов) в завис. от содержимого из Базы данных (напр. другого Excel-файла). Причем скрытый Раздел может быть целым файлом который "появится" (Приложение, Спека к Договору, Расписка, Доверенность итд).

Возня с Полями - геморрой, победителей этой битвы с крутыми проектами не видно. Они не имеют Стиля чтобы сливаться с текстом, а вы хотите от них обратное. Это верный способ идти не туда.

> В экселе с этим проще, там можно к любой ячейке обращаться,делать ее активной или даже к диапазону ячеек.

Причем здесь Excel, если этого речь шла о полях Writer? В OpenOffice|LibreOffice поддерживается VBA c Option VBASupport 1, и также можно обращаться к яч., диапазонам итд. Код на StarBasic и VBA можно чередовать, но VBA-методы заработают не все. Но самое-самое -работает:

Option VBASupport 1

Sub test()
[A5:A100]="Ура"
[A5:A100].Font.Bold = True
[A5:A100].Interior.Color = vbRed
End sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ОлегV

Спасибо за участие. Я решил свою проблему). Сам себя натолкнул на идею использовать текстовые таблицы, а они именные. Соответственно можно к ним обращаться и форматировать каждую ячейку.Я сделал таблицу с одним столбцом на всю ширину листа, в каждую ячейку поместил абзац, границы сделал не видимые.
И теперь просто изменяя высоту ячейки я могу скрыть ее содержимое. Все получилось даже лучше, чем я хотел изначально.