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