macro para dar formato a una celda de Calc

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

macro para dar formato a una celda de Calc

Notapor ppinedo » Sab Oct 06, 2018 9:33 pm

hola foreros,
estoy intentando aplicar formato a unos datos copiados desde una hoja(H1) a orta(H2), pero tengo problemas con algunos formatos:

este es el codigo que estoy utilizando:

Código: Seleccionar todo   Expandir vistaContraer vista
option vbasupport 1

Sub formatos

fila=1
for col=1 to 4
   Sheets("H2").Cells(fila, col) = Sheets("H1").cells(fila,col)
   Sheets("H2").Cells(fila, col).NumberFormat = "dd/mm/AA"   
next

End Sub

al aplicar formato "dd/mm/AA" me salta un error de tiempo de ejecucion, sin embargo si le doy formato "dddd" me lo aplica perfectamente :?: ¿alguien me puede echar una mano?


Gracias foreros,
saludos
Última edición por ppinedo el Dom Oct 07, 2018 11:25 am, editado 1 vez en total
XP + AOO 4.0.0 / W10Home + LibOff 5.4
ppinedo
 
Mensajes: 51
Registrado: Jue Feb 23, 2012 1:16 pm

Re: macro para dar formato a una celde de calc

Notapor FJCC-ES » Dom Oct 07, 2018 5:40 am

El NumberFormat de una celda es un número. Puede aplicar un formato a la celda A1 con este código.
Código: Seleccionar todo   Expandir vistaContraer vista
Dim sLocale as New com.sun.star.lang.Locale
sLocale.Country = "ES" 'pais
sLocale.Language = "es" 'idioma
dateFormatString = "DD/MM/AA"
oDoc = ThisComponent
NumForms = oDoc.getNumberFormats()
DateKey = NumForms.queryKey(dateFormatString, sLocale, True) 'si existe el formato, cual es su numero
'Print "DateKey = "; DateKey
IF DateKey = -1 then '-1 = el formato no existe
   DateKey = NumForms.addNew(dateFormatString, sLocale) ' agregar formato nuevo
'   Print "DateKey = "; DateKey
end if
Sheet = oDoc.Sheets.getByIndex(0)
Cell = Sheet.getCellByPosition(0,0) 'Columna, Fila
Cell.NumberFormat = DateKey
FJCC-ES
 
Mensajes: 673
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: macro para dar formato a una celda de Calc

Notapor ppinedo » Dom Oct 07, 2018 11:23 am

logre resolverlo con "DD/MM/AA" y no "dd/mm/AA"

Ahora me surge otro problema, este codigo solo me sirve si el dato copiado es una fecha ¿como puedo comprobar el tipo de dato antes de aplicar el formato de fecha?
XP + AOO 4.0.0 / W10Home + LibOff 5.4
ppinedo
 
Mensajes: 51
Registrado: Jue Feb 23, 2012 1:16 pm

Re: macro para dar formato a una celda de Calc

Notapor PepeOooSevilla » Lun Oct 08, 2018 11:29 am

Hola.
El lenguaje BASIC de OpenOffice/LibreOffice contiene numerosas funciones para inspeccionar e identificar variables:

    IsArray: ¿La variable es un array/matriz/vector?
    IsDate: ¿La variable contiene una fecha/hora válida?
    IsEmpty: ¿La variable está vacía (tipo Variant)?
    IsMissing: ¿La variable es un argumento que no figura en la llamada a una función?
    IsNull: ¿La variable no tiene asignado ningún objeto?
    IsNumeric: ¿La variable contiene un número válido?
    IsObject: ¿La variable es un objeto?
    IsUnoStruct: ¿La variable es del tipo estructura UNO?
    TypeLen: Espacio usado por el tipo de variable.
    TypeName: Devuelve el nombre del tipo de objeto como una cadena de caracteres.
    VarType: Devuelve el tipo de variable como un número entero.

Ejemplo de TypeName y VarType en la Ayuda de LibreOffice 6.1 (haz otras búsquedas en cuadro de texto Índice de la izquierda de la pantalla): Función TypeName; Función VarType.

Y para próximas consultas, recuerda, "una pregunta por tema y un tema por pregunta".
Saludos cordiales.
LibreOffice 6.1.5 en Windows 7 / 10
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 1066
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados