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")
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)
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
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
Postar um comentário