Página 1 de 1

[RESUELTO] Macro no copia contenido tipo fecha

Publicado: Jue Feb 21, 2019 3:02 pm
por aacurso
Hola.

Estoy intentando copiar todas las hojas de un fichero Calc dentro de una misma hoja usando la Macro que publicó Federico, por aquí fornelasa en este mismo foro https://forum.openoffice.org/es/forum/v ... 232#p23134.

Código: Seleccionar todo

Sub UnirHojas()
dim document as object
dim dispatcher as object
dim args1(5) as new com.sun.star.beans.PropertyValue
dim args3(0) as new com.sun.star.beans.PropertyValue
'----------------------------------------------------------------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args3(0).Name = "Sel"
args3(0).Value = true
'----------------------------------------------------------------------------------------------------------------------------
ThisComponent.Sheets.InsertNewByName("UnionDeDatos",0)
ThisComponent.CurrentController.Select(ThisComponent.Sheets(0).GetCellRangeByName("A1"))
'-----------------------------------------------------------------------------------------------------------------------------
for a = 1 to ThisComponent.Sheets.GetCount()-1
ThisComponent.CurrentController.Select(ThisComponent.Sheets(a).GetCellRangeByName("A1"))
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
args1(0).Name = "Nr"
args1(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
args1(0).Name = "Flags"
args1(0).Value = "SV"
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoLeftToStartOfData", "", 0, args1())
next
'----------------------------------------------------------------------------------------------------------------------------------------
ThisComponent.CurrentController.Select(ThisComponent.Sheets(0).GetCellRangeByName("A1"))
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args3())
args1(0).Name = "aExtraWidth"
args1(0).Value = 100
dispatcher.executeDispatch(document, ".uno:SetOptimalColumnWidth", "", 0, args1())
End Sub
El problema es que el contenido de las celdas de tipo fecha no las copia (quedan en blanco en la copia).

Si cambio el tipo de celda que contiene una fecha para que sea tipo número, sí se copia en formato número (número que identifica a la fecha), pero si quiero tener en la hoja copia el formato fecha, debería ir una a una por cada celda para cambiar su tipo a fecha (las fechas aparecen siempre en la misma columna, pero en filas aleatorias y en esta misma columna aparecen también otro tipo de datos (texto, números) por lo que no compensa.

¿Alguna sugerencia para resolver el problema?
Gracias.

Re: Macro no copia contenido tipo fecha

Publicado: Jue Feb 21, 2019 7:12 pm
por fornelasa
Intenta con:

Código: Seleccionar todo

args1(0).Value = "SVDFT"
cambiando la linea correspondiente-
Saludos, Federico.

Re: Macro no copia contenido tipo fecha

Publicado: Jue Feb 21, 2019 8:55 pm
por aacurso
Gracias Federico.
Tu solución ha funcionado a la perfección.
Saludos.