[RESUELTO] Copiar todas las hojas de otro libro en Calc

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
markotxe
Mensajes: 27
Registrado: Jue May 02, 2019 9:47 am

[RESUELTO] Copiar todas las hojas de otro libro en Calc

Mensaje por markotxe »

Buenas noches,
Trabajo desde un libro A y me gustaría importar (copiar) todas las hojas de otro libro (libro B).
Para realizar esta operación tengo que cumplir con dos requisitos.
1. No puedo mencionar la url exacta del libro B porque puede cambiar.
2. No puedo nombrar la hojas destinadas a ser copiadas porque, ellas tampoco, no son fijas (cambian de nombre cada semana)

Gracias a este foro y después de varios días de búsquedas y pruebas, he encontrado los dos códigos que siguen.
El primero cumple plenamente con el primero requisito (Buscar un documento sin tener que escribir su url en la macro).
Pero el segundo (que, al parecer, importa todas las hojas), me da problema. No lo entiendo y soy incapaz de adaptarlo...


Primer código:

Código: Seleccionar todo

Sub ElegirUnLibro
	Dim oFolderDialog As Object
	Dim oFileDialog as Object, oFiles As Object
	Dim Valor As Integer
        Dim NomDoc as String	
	oFileDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")	
			with oFileDialog 
			.DisplayDirectory = ConvertToUrl("C:\")
			.appendFilter("Calc documents (*.ods)", "*.ods") 'filtra solo documentos ods
			End With
	Valor = oFileDialog.Execute()
	oFiles = oFileDialog.getFiles
	NomDoc = ConvertFromURL(oFiles(0))
	Call CopiarTodo      
End Sub


Segundo codigo:

Código: Seleccionar todo

Sub CopiarTodo()
util = createUnoService("org.universolibre.EasyDev")
source = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
target = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
doc = ThisComponent
source.Doc = doc
new_doc = util.newDoc("")
target.Doc = new_doc
util.sheetCopyToDoc(source, target, -1, True, False)
End Sub
Gracias por vuestra atención
Atentamente
Marc
Última edición por markotxe el Dom Mar 08, 2020 9:39 pm, editado 2 veces en total.
OpenOffice 4.1.5 CALC, Window10
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Copiar todas las hojas de otro libro en Calc

Mensaje por mauricio »

La segunda parte del código, hace uso de una extensión que desarrolle hace años, si no la tienes, primero instalada, nunca lo podrás ejecutar, pero... esa extensión esta obsoleta... la nueva solo funciona con LibreOffice... y veo en tu firma que usas OpenOffice...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
markotxe
Mensajes: 27
Registrado: Jue May 02, 2019 9:47 am

Re: Copiar todas las hojas de otro libro en Calc

Mensaje por markotxe »

Hola Mauricio,
Muchas gracias por la precisión. Efectivamente estoy con Open Office, es el sistema operativo que usamos y desafortunadamente no se puede cambiar...
Que me aconsejas?
OpenOffice 4.1.5 CALC, Window10
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Copiar todas las hojas de otro libro en Calc

Mensaje por mauricio »

La ultima versión de EasyDev debería funcionar en tu versión de OpenOffice:
https://gitlab.com/mauriciobaeza/easyde ... v2.7.3.oxt

Mira la documentación por favor:
https://easydev.readthedocs.io/es/latest/
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
gustavodiaz00
Mensajes: 64
Registrado: Mié Abr 26, 2017 1:29 am
Ubicación: Argentina, San Nicolás de los Arroyos

Re: Copiar todas las hojas de otro libro en Calc

Mensaje por gustavodiaz00 »

Hola

Te dejo un archivo àra que lo pruebes creo que te va servir.

Importo los datos usando rangos y copiar y pegar.

El rango esta definido en la subrutina Importar. Se puede cambiar a tus necesidades
Ejemplo de importar archivo.ods
(13.08 KiB) Descargado 207 veces
Saludos espero que te sirva.
LibreOffice 6.1 en KDE Neon
markotxe
Mensajes: 27
Registrado: Jue May 02, 2019 9:47 am

Re: Copiar todas las hojas de otro libro en Calc

Mensaje por markotxe »

Hola GustavoDiaz00,
Muchas gracias por este enlace, me estoy volviendo loco con este asunto...
Ahora mismo, le hecho un vistazo y espero daros buenas noticias pronto!
Gracias
OpenOffice 4.1.5 CALC, Window10
markotxe
Mensajes: 27
Registrado: Jue May 02, 2019 9:47 am

Re: Copiar todas las hojas de otro libro en Calc

Mensaje por markotxe »

Hola GustavoDiazOO, hola forum,
:bravo: ¡Funciona!!! :bravo:
Solo he tenido introducir la url del documento en el cual quería importar los datos. (El documento original creaba un archivo nuevo...)
Cambiando esta linea

Código: Seleccionar todo

    RutaNueva = "private:factory/scalc"
por esta...

Código: Seleccionar todo

  RutaNueva = ConvertToUrl("C:\Users\.. la url completa del documento.ods")    'Url del libro de destino 
Todo va tremendamente bien (simple de uso, fluido y rápido...). Estoy super contento!
Muchissimas gracias Gustavo, Mauricio y a todo el forum!
OpenOffice 4.1.5 CALC, Window10
Avatar de Usuario
gustavodiaz00
Mensajes: 64
Registrado: Mié Abr 26, 2017 1:29 am
Ubicación: Argentina, San Nicolás de los Arroyos

Re: [RESUELTO] Copiar todas las hojas de otro libro en Calc

Mensaje por gustavodiaz00 »

Hola , que bien que te sirvio.

En la rutina

Código: Seleccionar todo

        Function OpenArchivo ( Optional oFolder As String) As String
Podes ingresar una ruta predetrminada X para abriri un archivo, sino toma los valores por defecto.

Código: Seleccionar todo

       oPathSettings = CreateUnoService( "com.sun.star.util.PathSettings" )
       oIniFolder = oPathSettings.Work
Recuerda de marcar el tema como resuelto
LibreOffice 6.1 en KDE Neon
Responder