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

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

30 Октябрь 2020, 12:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 93


WWW
« Стартовое сообщение: 16 Август 2013, 08:41 »

Помогите! Не могу найти...  Непонимающий
Нужно добавить текст в виде примечания к ячейке. Как?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 16 Август 2013, 09:55 »

Ты имел в виду ЭТО?
На Basic'е это выглядит приблизительно так:
Код:
Sub AddCommentHere(Optional sText As String)
Dim oCurrentSelection As Variant
Dim oCellByPosition As Variant
Dim oAnnotation As Variant
Dim sString As String
REM Взять текущее выделение
oCurrentSelection = ThisComponent.getCurrentSelection()
REM Может быть выделен целый диапазон - берем из него верхнюю левую ячейку
oCellByPosition = oCurrentSelection.getCellByPosition(0, 0)
REM Получаем её примечание (если оно уже есть)
oAnnotation = oCellByPosition.getAnnotation()
REM Пытаемся проситать текст этого примечания (если его нет - пустая строка)
sString = oAnnotation.getString()
REM Была ли задана строка в параметре процедуры
If IsMissing(sText) Then ' Не была - спросить у пользователя
sString = InputBox("Введи новый текст примечания", "Примечание для ячейки " _
+ oCellByPosition.AbsoluteName, sString)
Else
sString = sString + sText ' Была задана - дописать к имеющемуся тексту
EndIf
REM Вставить новое примечание с получившейся строкой
REM Если уже было что-то - затрется
oCellByPosition.getSpreadsheet().getAnnotations().insertNew( _
oCellByPosition.getCellAddress(), sString)
REM Сделать примечание видимым постоянно (не обязательный оператор)
oCellByPosition.getAnnotation().setIsVisible(True)
End Sub
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
dndn
Форумчанин
***
Offline Offline

Сообщений: 93


WWW
« Ответ #2: 16 Август 2013, 10:59 »

Спс, именно это...  Всё хорошо
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 16 Август 2013, 11:22 »

Мой пример макроса должен глючить, если запустить его на множественном выделении (несколько диапазонов с зажатым Ctrl) - так что это только образец...
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
dndn
Форумчанин
***
Offline Offline

Сообщений: 93


WWW
« Ответ #4: 16 Август 2013, 15:18 »

Множественное и не нужно - к каждой ячейке будет свое.
Множественных выделений и не будет. Примечания будут добавляться в процессе заполнения таблицы, поячеечно.
На скорую руку проверил - работает...
« Последнее редактирование: 16 Август 2013, 15:24 от dndn » Записан
dndn
Форумчанин
***
Offline Offline

Сообщений: 93


WWW
« Ответ #5: 16 Август 2013, 19:47 »

Тогда уже вдогонку. Вот ЗДЕСЬ вроде бы об объединении/разделении ячеек. А как это в код Бэйсика завернуть?  Злой
Записан
dndn
Форумчанин
***
Offline Offline

Сообщений: 93


WWW
« Ответ #6: 16 Август 2013, 20:47 »

Нашел, для объединения:
Код:
oRange = oDoc.Sheets(0).getCellRangeByName ("A1:A3")
oRange.Merge(True)
и для разъединения:
Код:
oRange.Merge(False)
« Последнее редактирование: 16 Август 2013, 22:09 от dndn » Записан
dndn
Форумчанин
***
Offline Offline

Сообщений: 93


WWW
« Ответ #7: 11 Сентябрь 2013, 16:02 »

Кстати, если лист определен как oSheet, ячейка как oCell, а текст примечания сохранен в строке sText, то добавить примечание к ячейке можно всего одной строкой:

Код:
oSheet.Annotations.insertNew (oCell.CellAddress, sText)
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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