Hola:
Necesito hacer una macro que le asigne el formato numérico personalizado a 3 columas distintas
los formatos de cada columna son:
\0000
\00000000
\00000000,00
Agradeceria la ayuda
Ayuda macro formato numerico
Ayuda macro formato numerico
openoffice 4.1.1 Windows 7
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Ayuda macro formato numerico
Hola.
- 1º. Te damos la bienvenida al Foro y, si aún no has leído la Guía de supervivencia, por favor, no dejes de hacerlo.
- 2º. Te adjunto un archivo con un ejemplo de una posible solución. Lee también los comentarios incluidos en el código. Adapta el código a tus necesidades.
Código: Seleccionar todo
REM ***** BASIC ***** Option Explicit Const ICONO_STOP As Integer = 16 Const BOTON_ACEPTAR As Integer = 0 Sub EstablecerFormato ' Archivo CALC Dim ArchivoCALC As Object ' Hoja dentro del archivo. En este ejemplo es la hoja activa Dim HojaActiva As Object ' Los distintos formatos que necesito Dim CadenasFormatos(5) As String On Error GoTo TRATAR_ERROR ArchivoCALC = ThisComponent HojaActiva = ArchivoCALC.CurrentController.getActiveSheet() ' ¡ATENCIÓN! Estos formatos son para números positivos, el cero y los números negativos aparecerían con el signo - delante CadenasFormatos(0) = "\\0000" CadenasFormatos(1) = "\\00000000" CadenasFormatos(2) = "\\00000000,00" ' Si quieres formatear los números negativos para que se VEAN igual que los positivos, entonces CadenasFormatos(3) = "\\0000;\\0000" CadenasFormatos(4) = "\\00000000;\\00000000" CadenasFormatos(5) = "\\00000000,00;\\00000000,00" ' Debes tener en cuenta que el número sigue siendo negativo a efectos de operaciones matemáticas, observa el valor en la barra de fórmulas With HojaActiva With .getCellRangeByName("A1:A10") .NumberFormat = IdxFmtPersonalizado(ArchivoCALC, CadenasFormatos(0)) End With With .getCellRangeByName("B1:B10") .NumberFormat = IdxFmtPersonalizado(ArchivoCALC, CadenasFormatos(1)) End With With .getCellRangeByName("C1:C10") .NumberFormat = IdxFmtPersonalizado(ArchivoCALC, CadenasFormatos(2)) End With With .getCellRangeByName("D1:D10") .NumberFormat = IdxFmtPersonalizado(ArchivoCALC, CadenasFormatos(3)) End With With .getCellRangeByName("E1:E10") .NumberFormat = IdxFmtPersonalizado(ArchivoCALC, CadenasFormatos(4)) End With With .getCellRangeByName("F1:F10") .NumberFormat = IdxFmtPersonalizado(ArchivoCALC, CadenasFormatos(5)) End With End With Exit Sub TRATAR_ERROR: MsgBox "Lo siento pero no puedo mostrar ese formato.", ICONO_STOP + BOTON_ACEPTAR, "¡Atención!" End Sub Function IdxFmtPersonalizado(DocCalc As Object, CadFmtPersonal As String) As Long 'Conjunto de formatos en el entorno local para el archivo CALC Dim FmtArchivoCalc As Object 'Índice que identifica a un formato personalizado en el entorno local Dim IdxFmt As Long '¿En qué idioma y en qué país? Dim EntornoLocal As New com.sun.star.lang.Locale 'Idioma: Español EntornoLocal.Language = "ES" 'País: España EntornoLocal.Country = "ES" FmtArchivoCalc = DocCalc.NumberFormats IdxFmt = FmtArchivoCalc.queryKey(CadFmtPersonal, EntornoLocal, True) If IdxFmt = -1 Then IdxFmt = FmtArchivoCalc.addNew(CadFmtPersonal, EntornoLocal) End If IdxFmtPersonalizado = IdxFmt End Function
- 3º. Si estás interesado en la programación de macros para OpenOffice tienes que leer el libro de nuestro compañero mauricio Aprendiendo OOo Basic.
También en las páginas Manuales de Apache OpenOffice en español: Basic y, Basic OpenOffice: Apache OpenOffice Basic en español de nuestro compañero SLV-es, encontrarás muy buena información.
- 4º. Y cuando consideres que el tema está resuelto, bien por las respuestas dadas o bien por que has descubierto tú la solución (en este caso deberías compartirla con la comunidad) debes indicarlo (¿Cómo marcar como RESUELTO un tema?), ya que, de esta forma, conseguiremos un Foro más ordenado.
- Adjuntos
-
- FORO_CALC_Ayuda macro formato numerico.ods
- AOO 4.1.1
- (11.89 KiB) Descargado 148 veces
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.