Здравствуйте!
В LibreOffice Calc очень не хватает функции, чтобы одной кнопкой установить "толстую" рамку вокруг выделенного диапазона ячеек, не затрагивая внутренние линии. Поиск в гугле результатов не дал, везде рекомендуют делать через "правая кнопка - Формат ячеек - Обрамление", что очень долго и неудобно. Я пробовал вынести на панель инструментов кнопку выполнения макроса. Включил запись, проделал все манипуляции, сохранил. Проблема в том, что при выполнении этого макроса, толстая рамка устанавливается, но стираются внутренние линии. Пробовал редактировать, менять параметры, ещё разные варианты с форумов, но то, что мне нужно, так и не получилось.
Есть ли какие-нибудь варианты? Спасибо.
sub BoldBorder
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(7) as new com.sun.star.beans.PropertyValue
args1(0).Name = "BorderOuter.LeftBorder"
args1(0).Value = Array(0,0,71,0,0,71)
args1(1).Name = "BorderOuter.LeftDistance"
args1(1).Value = 0
args1(2).Name = "BorderOuter.RightBorder"
args1(2).Value = Array(0,0,71,0,0,71)
args1(3).Name = "BorderOuter.RightDistance"
args1(3).Value = 0
args1(4).Name = "BorderOuter.TopBorder"
args1(4).Value = Array(0,0,71,0,0,71)
args1(5).Name = "BorderOuter.TopDistance"
args1(5).Value = 0
args1(6).Name = "BorderOuter.BottomBorder"
args1(6).Value = Array(0,0,71,0,0,71)
args1(7).Name = "BorderOuter.BottomDistance"
args1(7).Value = 0
dispatcher.executeDispatch(document, ".uno:BorderOuter", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "BorderInner.Horizontal"
args2(0).Value = Array(0,0,0,0,0,0)
args2(1).Name = "BorderInner.Vertical"
args2(1).Value = Array(0,0,0,0,0,0)
args2(2).Name = "BorderInner.Flags"
args2(2).Value = 3
args2(3).Name = "BorderInner.ValidFlags"
args2(3).Value = 79
args2(4).Name = "BorderInner.DefaultDistance"
args2(4).Value = 0
dispatcher.executeDispatch(document, ".uno:BorderInner", "", 0, args2())
end sub