Pular para o conteúdo principal

Excluindo Todo Tipo de Conteúdos a Partir da Faixa do Calc Usando Macro

Este tutorial foi retirado do site Debugpoint, não mudei nada nenhuma linha de comando, apenas traduzir a explicação do tutorial e espero que ajudem a todos.

Usando macro que pode limpar tudo o que contém numa célula ou num conjunto de células. Neste tutorial, vamos limpar todo o tipo de conteúdo a partir de uma gama.

Permite definir um sub que iria limpar o conteúdo do intervalo.

Sub ClearRangeContents()
End Sub


Permite obter um porão de intervalo em Sheet1. O getCellRangeByName função retorna um objeto de intervalo corresponsing para o intervalo que é transmitido via argumento. 

Dim oDoc As Object
Dim oSheet As Object
Dim oCell As Object
Dim oRange As Object

oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Refers to Sheet1 as in 0, 1, 2 etc
oRange = oSheet.getCellRangeByName("A3:B10") 


http://i0.wp.com/www.debugpoint.com/blog/wp-content/uploads/2015/02/Range-A3-B10-with-different-types-of-values.png
Faixa A3: B10 com diferentes tipos de valores
Os clearContents função gama (bandeiras) pode ser usado para limpar o conteúdo do intervalo. As bandeiras são nada, mas os tipos de valores que podem residir em uma célula. Pode ser de cordas, numerics, fórmulas, estilos etc. Você pode especificar quais tipos você pretende apagar a partir desse intervalo. ClearContents bandeiras argumento é do tipo de dados de comprimento e pode leva várias bandeiras como entrada.

As bandeiras estão listados no OpenOffice / LibreOffice CellFlags grupo constante que faz parte do com.sun.star.sheet. 

Lista de bandeiras sob com.sun.star.sheet.CellFlags 


Flags Description Values
VALUE selects constant numeric values that are not formatted as dates or times. 1
DATETIME selects constant numeric values that have a date or time number format. 2
STRING selects constant strings. 4
ANNOTATION selects cell annotations. 8
FORMULA selects formulas. 16
HARDATTR selects all explicit formatting, but not the formatting which is applied implicitly through style sheets. 32
STYLES selects cell styles. 64
OBJECTS selects drawing objects. 128
EDITATTR selects formatting within parts of the cell contents. 256
FORMATTED selects cells with formatting within the cells or cells with more than one paragraph within the cells. 512

 
Coloque todas essas constantes sob uma variável e passá-lo para clearContents função.

Dim oFlags As Long
oFlags = com.sun.star.sheet.CellFlags.VALUE + _
    com.sun.star.sheet.CellFlags.DATETIME + _
    com.sun.star.sheet.CellFlags.STRING + _
    com.sun.star.sheet.CellFlags.ANNOTATION + _
    com.sun.star.sheet.CellFlags.FORMULA + _
    com.sun.star.sheet.CellFlags.HARDATTR + _
    com.sun.star.sheet.CellFlags.STYLES + _
    com.sun.star.sheet.CellFlags.OBJECTS + _
    com.sun.star.sheet.CellFlags.EDITATTR

oRange.clearContents(oFlags)

Run

Coloque abaixo todo bloco de código em uma planilha Calc que contém vários valores em um intervalo e executar a macro chamando a função. Você pode ver a saída é limpo de todos os valores, formatação etc.

Macro Completo

Sub ClearRangeContents()

    Dim oDoc As Object
    Dim oSheet As Object
    Dim oCell As Object
    Dim oRange As Object
    Dim oFlags As Long

    oDoc = ThisComponent
    oSheet = oDoc.Sheets(0) ' Refers to Sheet1 as in 0, 1, 2 etc
    oRange = oSheet.getCellRangeByName("A3:B10")

    oFlags = com.sun.star.sheet.CellFlags.VALUE + _
        com.sun.star.sheet.CellFlags.DATETIME + _
        com.sun.star.sheet.CellFlags.STRING + _
        com.sun.star.sheet.CellFlags.ANNOTATION + _
        com.sun.star.sheet.CellFlags.FORMULA + _
        com.sun.star.sheet.CellFlags.HARDATTR + _
        com.sun.star.sheet.CellFlags.STYLES + _
        com.sun.star.sheet.CellFlags.OBJECTS + _
        com.sun.star.sheet.CellFlags.EDITATTR

    oRange.clearContents(oFlags)

End Sub 

Fonte: DeguPoint

Comentários