2016-03-22 3 views
0

Я хотел бы скопировать только формат (без значения) из диапазона ячеек (L3: L10) в диапазон ячеек (H10: H11).копировать только формат ячейки (нет значения)

С Excel легко:

Sheets(sheet1).Range("L3:L10").Select 
Selection.Copy 
Sheets(sheet1).Range("H10:H11").Select 
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

Но с LibreOffice?

Вы можете мне помочь?

+0

Что вы пробовали до сих пор? Возможно, вам стоит взглянуть на это, если вы не знаете, с чего начать: http://www.openoffice.org/documentation/manuals/userguide3/0312CG3-CalcMacros.pdf – Ralph

ответ

0

Я побежал запись макросов, и он генерировал это:

Sub PasteFormatting 
    dim document as object 
    dim dispatcher as object 
    document = ThisComponent.CurrentController.Frame 
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 

    dim args1(0) as new com.sun.star.beans.PropertyValue 
    args1(0).Name = "ToPoint" 
    args1(0).Value = "$L$3:$L$10" 
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) 
    dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array()) 

    dim args3(0) as new com.sun.star.beans.PropertyValue 
    args3(0).Name = "ToPoint" 
    args3(0).Value = "$H$10:$H$11" 
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3()) 

    dim args4(5) as new com.sun.star.beans.PropertyValue 
    args4(0).Name = "Flags" 
    args4(0).Value = "T" 
    args4(1).Name = "FormulaCommand" 
    args4(1).Value = 0 
    args4(2).Name = "SkipEmptyCells" 
    args4(2).Value = false 
    args4(3).Name = "Transpose" 
    args4(3).Value = false 
    args4(4).Name = "AsLink" 
    args4(4).Value = false 
    args4(5).Name = "MoveMode" 
    args4(5).Value = 6 
    dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4()) 
End Sub 

Он работает, хотя код некрасиво, как и следовало ожидать диспетчерские коды. Диапазоны, которые вы просили, имеют разные размеры, поэтому он генерирует предупреждение. Было бы легко исправить это, просто используя «$ L $ 3: $ L $ 4» в качестве исходного диапазона.

Код API будет намного короче и чище. Например, используя XTransferableSupplier, см. openoffice: duplicating rows of a table in writer. Однако может быть невозможно вставить только форматирование с помощью XTransferable.

Смежные вопросы