Макрос для добавления примечания к ячейке

Автор dndn, 16 августа 2013, 09:41

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

dndn

Помогите! Не могу найти...  ???
Нужно добавить текст в виде примечания к ячейке. Как?

JohnSUN

Ты имел в виду ЭТО?
На 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


JohnSUN

Мой пример макроса должен глючить, если запустить его на множественном выделении (несколько диапазонов с зажатым Ctrl) - так что это только образец...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

dndn

#4
Множественное и не нужно - к каждой ячейке будет свое.
Множественных выделений и не будет. Примечания будут добавляться в процессе заполнения таблицы, поячеечно.
На скорую руку проверил - работает...

dndn

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

dndn

#6
Нашел, для объединения:
oRange = oDoc.Sheets(0).getCellRangeByName ("A1:A3")
oRange.Merge(True)

и для разъединения:
oRange.Merge(False)

dndn

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

oSheet.Annotations.insertNew (oCell.CellAddress, sText)