Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

18 Август 2019, 20:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Числовые форматы, установка макросом  (Прочитано 1154 раз)
0 Пользователей и 1 Гость смотрят эту тему.
МР
Форумчанин
***
Offline Offline

Сообщений: 86


« Стартовое сообщение: 28 Апрель 2019, 23:39 »

В VBA Excel устанавливаю NumberFormat "0,00" - число в ячейке отображается с 2-мя дес. знаками,"0,00000" - с 5-ю,"0,000" - с 3-мя,"0" - без дес. знаков. Как того же  достичь в ОО Basic для Calc? NumerFormat=2 приводит к отображению с 2-мя дес. знаками, 0 - без дес. знаков. Вместо 5 или 3-х дес. знаков отображается галиматья какая-то. На форуме, не нашел, а вроде не уникальная "потребность".
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 739


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 29 Апрель 2019, 09:40 »

Свойство ячейки NumberFormat принимает номер формата, а не строку. Если не знаете номер нужного формата, назначьте вручную формат ячейки и посмотрите какой у него номер. Если нужного формата нет, можно создать свой. Что вы хотите сделать? Покажите макрос.
Записан

МР
Форумчанин
***
Offline Offline

Сообщений: 86


« Ответ #2: 30 Апрель 2019, 10:48 »

Макроса как такового нет. Есть внешняя по отношению к LO программа , есть написанная на языке этой программы подпрограмма, записывающая значение в ячейку открытой в Excel или Calc электронной таблицы. Выбор офиса происходит вне этой подпрограммы, но он ей известен. Всего-то захотел опционально вместе с числовым значением обрабатывать  в подпрограмме количество отображаемых дес. знаков. Для Excel заранее знал как, полагал что и для Calc  не сложнее. Разобрался уже, прописал в десяток ячеек  десяток форматов и прочитал их. Поскольку закономерности в нумерации не нашел, просто буду держать их в массиве. Вообще, предварительно попробовал, как в VBA, разузнать что-то с помощью макрорекордера. При установке  формата ячейки получил вот такой макрос:
Код:
sub M1
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "NumberFormatValue"
args1(0).Value = 115

dispatcher.executeDispatch(document, ".uno:NumberFormatValue", "", 0, args1())


end sub

Догадываюсь теперь, что это установка NumberFormat =115 . Но каким-то уж очень окольным путем (
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 452


« Ответ #3: 30 Апрель 2019, 11:07 »

Посмотрите здесь, как правильно определять код формата. (Где-то здесь на форуме эта тема тоже мелькала - не помню где.)
Записан

С уважением,
Михаил Каганский
МР
Форумчанин
***
Offline Offline

Сообщений: 86


« Ответ #4: 30 Апрель 2019, 14:56 »

Начинаю понимать, что номера фоматов - не нечто стандартное, а могут меняться от документа к документу. Своеобразно...
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 739


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #5: 30 Апрель 2019, 16:46 »

Начинаю понимать, что номера фоматов - не нечто стандартное, а могут меняться от документа к документу. Своеобразно...
Есть "стандартный" набор форматов (с номерами от 0 до 100, но не все номера использованы) — насколько я знаю, их можно удалить, но при попытке "вернуть" будет создан новый пользовательский формат. Если не играться форматами, можно считать, что их номера не меняются. Если хотите быть уверенным, то можно сначала запросить (макросом) номер нужного формата, а затем его назначить ячейке.
Записан

МР
Форумчанин
***
Offline Offline

Сообщений: 86


« Ответ #6: 30 Апрель 2019, 21:55 »

Нашел подходящий макрос на сайте АОО, "подкрутил " и втащил в свой код. Запускаю при открытии книги, записываю в массив 11 кодов (2 стандартных+9 создаю), потом уже из массива достаю.  Почему-то возвращает коды не 1 и 2 и создает не 126 и далее, как при ручном задании формата в ячейках, а 10001,10002, 10126.  Но работает, менять не стал. Исходный макрос, пожалуй ,здесь продублирую, вдруг кто ещё искать станет. Если при этом что нарушаю, просьба к модератору стереть и сильно не банить

Код:
function fnGetNumberFormatId(oDoc, sNumberFormat)
sCharLocale = oDoc.getPropertyValue("CharLocale")
nFormatId = oDoc.getNumberFormats.queryKey(sNumberFormat, sCharLocale, false)
if nFormatId = -1 then 'Not yet defined
        nFormatId = oDoc.getNumberFormats.addNew(sNumberFormat, sCharLocale)
end if
fnGetNumberFormatId = nFormatId
end function

Всем откликнувшимся спасибо за помощь.
« Последнее редактирование: 30 Апрель 2019, 21:59 от МР » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 739


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 30 Апрель 2019, 22:14 »

Почему-то возвращает коды не 1 и 2 и создает не 126 и далее, как при ручном задании формата в ячейках, а 10001,10002, 10126.
Номера от 0 до 100 для стандартных форматов, другие для разных локалей, для российской локали 10000 и далее.
Если при этом что нарушаю, просьба к модератору стереть и сильно не банить
А что нарушаете? если не секрет.
Записан

МР
Форумчанин
***
Offline Offline

Сообщений: 86


« Ответ #8: 30 Апрель 2019, 23:31 »

А что нарушаете? если не секрет.

Надеюсь, что ничего не нарушаю. Но пока просматривал форум, обратил внимание, что довольно много удаленных модератором фрагментов кода.  Почему,  за что - мне неизвестно. А тут макрос цельнотянутый со стороннего ресурса . Мало ли...
« Последнее редактирование: 30 Апрель 2019, 23:33 от МР » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 739


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 1 Май 2019, 08:14 »

По техническим причинам были удалены все вложения в старых темах до 2014г. Но если кто-то интересуется этими темами, мы можем либо попытаться восстановить удалённые документы либо решить вопрос заново.
Записан

Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!