Listar formatos en un archivo de Calc
From Apache OpenOffice Wiki
Solo tienes que pasarle la referencia al documento del cual te interese ver sus formatos. Si le pasas un documento nuevo, siempre te devolverá los mismos formatos. Si le pasas alguno de tus documentos, incluirá todos tus formatos personalizados.
Esta macro puede tener dos pequeñas mejoras, que sugerimos las realices por ti mismo:
- Puedes discriminar los documentos para que solo soporte los que tengan el método getNumberFormats
- En la columna de ejemplos, podrás ver en la columna E un ejemplo de cada formato, excepto los de la categoría Definidas por el usuario; esto es normal, pues el nuevo documento no tiene estos formatos, pero puedes implementar la copia de estos formatos para que se muestre el resultado.
'Basada en el original de Andrew Pitonyak 'Esta versión Mauricio Baeza Sub Todos_Los_Formatos(Documento As Object) Dim oFormatos As Object Dim mClaves, mArg() Dim oFormato As Object Dim co1 As Integer Dim aLocal As New com.sun.star.lang.Locale Dim oNuevoDocumento As Object Dim sTipo As String 'Para escribir los formatos en un nuevo documento de Calc oNuevoDocumento = StarDesktop.loadComponentFromURL( "private:factory/scalc", "_default", 0, mArg() ) With oNuevoDocumento.getSheets().getByIndex(0) 'Obtenemos los formatos del documento pasado oFormatos = Documento.getNumberFormats() 'Obtenemos todas las claves de los formatos mClaves = oFormatos.queryKeys( 0,aLocal,False ) For co1 = LBound( mClaves ) To UBound( mClaves ) 'Obtenemos cada formato oFormato = oFormatos.getByKey( mClaves(co1) ) 'Numero secuencial .getCellByPosition( 0,co1 ).setValue( co1+1 ) 'Definimos la categoría del formato Select Case oFormato.Type Case 2 : sTipo = "Fecha" Case 4 : sTipo = "Tiempo" Case 6 : sTipo = "Fecha Tiempo" Case 8 : sTipo = "Moneda" Case 16 : sTipo = "Numero" Case 32 : sTipo = "Cientifico" Case 64 : sTipo = "Fraccion" Case 128 : sTipo = "Porcentaje" Case 256 : sTipo = "Texto" Case 1024 : sTipo = "Logica" Case 2048 : sTipo = "Indefinida" Case Else : sTipo = "Definido por el usuario" End Select .getCellByPosition( 1,co1 ).setString( sTipo ) 'Escribimos la cadena del formato .getCellByPosition( 2,co1 ).setString( oFormato.FormatString ) 'y su clave correspondiente .getCellByPosition( 3,co1 ).setValue( mClaves(co1) ) 'Escribimos un numero aleatorio entre 100 y 1000 .getCellByPosition( 4,co1 ).setValue( co1+100+(Rnd*1000) ) 'Le establecemos el formato correspondiente .getCellByPosition( 4,co1 ).NumberFormat = mClaves(co1) 'Ajustamos el ancho de las columnas .getCellRangeByName( "A1:E1" ).getColumns.OptimalWidth = True Next End With End Sub
Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO, o quieres ampliar la información, no dudes en dirigirte al Foro Oficial en español de Apache OpenOffice para Macros y API UNO |