macro para dar formato a una celda de Calc

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
ppinedo
Mensajes: 55
Registrado: Jue Feb 23, 2012 1:16 pm

macro para dar formato a una celda de Calc

Mensaje por ppinedo »

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

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
FJCC-ES
Mensajes: 872
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: macro para dar formato a una celde de calc

Mensaje por FJCC-ES »

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

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
ppinedo
Mensajes: 55
Registrado: Jue Feb 23, 2012 1:16 pm

Re: macro para dar formato a una celda de Calc

Mensaje por ppinedo »

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
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: macro para dar formato a una celda de Calc

Mensaje por PepeOooSevilla »

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.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.
Responder