Listar formatos en un archivo de Calc

From Apache OpenOffice Wiki
< ES‎ | Manuales‎ | GuiaAOO‎ | TemasAvanzados‎ | Macros‎ | StarBasic‎ | Apendices
Revision as of 01:39, 5 November 2012 by Salva (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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



ES.Plantillas.Logo foro es.png
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

Personal tools