Copiar un rango de celdas de un libro a otro libro nuevo
Reglas del Foro
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
-
- Mensajes: 15
- Registrado: Mié Jul 04, 2018 5:35 pm
Copiar un rango de celdas de un libro a otro libro nuevo
Buenas tardes para todos,
Agradezco de su colaboración para la siguiente inquietud, deseo exportar la información que se encuentra en la hoja "BASE DE DATOS" del rango A4:C1048576 del libro "pasarDatos" y hacer que este contenido se copie a otro libro al cual llamare "Informe", he buscado el método pero no he encontrado la solución para esta igconita, de antemano agradezco de su colaboración.
Saludos
Agradezco de su colaboración para la siguiente inquietud, deseo exportar la información que se encuentra en la hoja "BASE DE DATOS" del rango A4:C1048576 del libro "pasarDatos" y hacer que este contenido se copie a otro libro al cual llamare "Informe", he buscado el método pero no he encontrado la solución para esta igconita, de antemano agradezco de su colaboración.
Saludos
- Adjuntos
-
- pasarDatos.ods
- (12.38 KiB) Descargado 225 veces
Open office 4.1.3 windows 7 profesional
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Este código copia el DataArray de las celdas en la hoja Base De Datos hasta la hoja Sheet1 del archivo Informe.ods.
(Primero borré los ceros en las celdas 'Base De Datos'.A1:A3)
(Primero borré los ceros en las celdas 'Base De Datos'.A1:A3)
Código: Seleccionar todo
doc = ThisComponent
fuente = doc.Sheets.getByName("Base de datos")
arranque = fuente.getCellRangeByName("A4")
cursor = fuente.createCursorByRange(arranque)
cursor.collapseToCurrentRegion
EndRow = cursor.RangeAddress.EndRow
DataArrayFuente = cursor.DataArray
URL = convertToURL("c:\users\fjcc\Desktop\Informe.ods")
Informe = StarDesktop.loadComponentFromURL(URL, "_blank", 0, Array())
oSheet1 = Informe.Sheets.getByName("Sheet1")
oCellRange = oSheet1.getCellRangeByPosition(0,0,2,EndRow - 3)
oCellRange.DataArray = DataArrayFuente
-
- Mensajes: 15
- Registrado: Mié Jul 04, 2018 5:35 pm
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Buenas tardes,
Agradezco de su ayuda FJCC-ES; sin embargo, tome el código y lo puse en prueba en el siguiente archivo pero aparece el siguiente error :
"Error de ejecución de BASIC.
Se ha producido una excepción
Type: com.sun.star.uno.RuntimeException
Message: ."
Aclaro que la información que deseo copiar se encuentra desde la celda D4 en adelante pero no se cual es el problema, agradezco de su ayuda adjunto archivo.
Agradezco de su ayuda FJCC-ES; sin embargo, tome el código y lo puse en prueba en el siguiente archivo pero aparece el siguiente error :
"Error de ejecución de BASIC.
Se ha producido una excepción
Type: com.sun.star.uno.RuntimeException
Message: ."
Aclaro que la información que deseo copiar se encuentra desde la celda D4 en adelante pero no se cual es el problema, agradezco de su ayuda adjunto archivo.
- Adjuntos
-
- Base.ods
- (27.01 KiB) Descargado 248 veces
Open office 4.1.3 windows 7 profesional
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Los datos en el archivo pasarDatos están en las columnas A:C. El código supone esto en la linea
.
Los Datos en el archivo Base.ods ocupan las columnas A:AL. Esta versión de la macro no supone que las datos están en columnas fijas.
Código: Seleccionar todo
oCellRange = oSheet1.getCellRangeByPosition(0,0,2,EndRow – 3)
Los Datos en el archivo Base.ods ocupan las columnas A:AL. Esta versión de la macro no supone que las datos están en columnas fijas.
Código: Seleccionar todo
doc = ThisComponent
fuente = doc.Sheets.getByName("Base_Agendados")
arranque = fuente.getCellRangeByName("D4")
cursor = fuente.createCursorByRange(arranque)
cursor.collapseToCurrentRegion
EndRow = cursor.RangeAddress.EndRow
EndColumn = cursor.RangeAddress.EndColumn
DataArrayFuente = cursor.DataArray
URL = convertToURL("/home/fjcc/Documents/Informe.ods")
Informe = StarDesktop.loadComponentFromURL(URL, "_blank", 0, Array())
oSheet1 = Informe.Sheets.getByName("Sheet1")
oCellRange = oSheet1.getCellRangeByPosition(0,0,EndColumn,EndRow - 3)
oCellRange.DataArray = DataArrayFuente
-
- Mensajes: 15
- Registrado: Mié Jul 04, 2018 5:35 pm
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Buenas tardes FJCC-ES,
Gracias por la ayuda suministrada; sin embargo, tengo otra consulta lo que sucede es que el archivo, se va a repartir a varias personas lo que tocaría estar cambiando la ruta a cada uno de los equipos para que esta ejecute correctamente, me gustaría saber si es posible que en vez de que se realice este cambio en la macro, mas bien la macro pregunte el lugar en donde desea guardar los cambios, he visto que es posible con el siguiente código pero no entiendo como acoplarlo en la macro que me suministro.
Sub GuardarArchivo2()
Dim oDlgCarpeta as Object
Dim sRuta As String
Dim oHoja As Object
Dim oCelda As Object
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
'Servicio para seleccionar una ruta, solo la carpeta
oDlgCarpeta = CreateUnoService ("com.sun.star.ui.dialogs.FolderPicker")
With oDlgCarpeta
'El título del cuadro de diálogo
.Title = "Selecciona el directorio donde guardar el nuevo archivo"
'El directorio predeterminado, si usas Windows puede ser D:\Mis documentos
.DisplayDirectory = ConvertToUrl("/home/mau")
End With
'Lo mostramos
If oDlgCarpeta.Execute() Then
'Obtenemos la ruta seleccionada por el usuario
sRuta = oDlgCarpeta.Directory
'La hoja donde se tomara el dato para el nombre del archivo
oHoja = ThisComponent.getSheets().getByName("Hoja1")
oCelda = oHoja.getCellRangeByName("A1")
'Construimos la ruta completa
sRuta = sRuta & "/" & oCelda.getString() & ".ODS"
'Guardamos el archivo
ThisComponent.storeAsURL( sRuta, mOpciones() )
MsgBox "Archivo guardado correctamente"
Else
MsgBox "Proceso cancelado"
End If
End Sub
Gracias por la ayuda suministrada; sin embargo, tengo otra consulta lo que sucede es que el archivo, se va a repartir a varias personas lo que tocaría estar cambiando la ruta a cada uno de los equipos para que esta ejecute correctamente, me gustaría saber si es posible que en vez de que se realice este cambio en la macro, mas bien la macro pregunte el lugar en donde desea guardar los cambios, he visto que es posible con el siguiente código pero no entiendo como acoplarlo en la macro que me suministro.
Sub GuardarArchivo2()
Dim oDlgCarpeta as Object
Dim sRuta As String
Dim oHoja As Object
Dim oCelda As Object
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
'Servicio para seleccionar una ruta, solo la carpeta
oDlgCarpeta = CreateUnoService ("com.sun.star.ui.dialogs.FolderPicker")
With oDlgCarpeta
'El título del cuadro de diálogo
.Title = "Selecciona el directorio donde guardar el nuevo archivo"
'El directorio predeterminado, si usas Windows puede ser D:\Mis documentos
.DisplayDirectory = ConvertToUrl("/home/mau")
End With
'Lo mostramos
If oDlgCarpeta.Execute() Then
'Obtenemos la ruta seleccionada por el usuario
sRuta = oDlgCarpeta.Directory
'La hoja donde se tomara el dato para el nombre del archivo
oHoja = ThisComponent.getSheets().getByName("Hoja1")
oCelda = oHoja.getCellRangeByName("A1")
'Construimos la ruta completa
sRuta = sRuta & "/" & oCelda.getString() & ".ODS"
'Guardamos el archivo
ThisComponent.storeAsURL( sRuta, mOpciones() )
MsgBox "Archivo guardado correctamente"
Else
MsgBox "Proceso cancelado"
End If
End Sub
Open office 4.1.3 windows 7 profesional
Re: Copiar un rango de celdas de un libro a otro libro nuevo
No entiendo exactamente que quiere que selecciona el usuario. ¿La carpeta donde está guardado Informe.ods o la carpeta donde se va a guardar Informe.ods después de copiar los datos de Base.ods? Esta macro abre Informe.ods, pega los datos de Base.ods, pregunta donde guardar el archivo y guarda una copia en esa carpeta.
Código: Seleccionar todo
doc = ThisComponent
fuente = doc.Sheets.getByName("Base_Agendados")
arranque = fuente.getCellRangeByName("D4")
cursor = fuente.createCursorByRange(arranque)
cursor.collapseToCurrentRegion
EndRow = cursor.RangeAddress.EndRow
EndColumn = cursor.RangeAddress.EndColumn
DataArrayFuente = cursor.DataArray
URL = convertToURL("/home/fjcc/Documents/Informe.ods")
Informe = StarDesktop.loadComponentFromURL(URL, "_blank", 0, Array())
oSheet1 = Informe.Sheets.getByName("Sheet1")
oCellRange = oSheet1.getCellRangeByPosition(0,0,EndColumn,EndRow - 3)
oCellRange.DataArray = DataArrayFuente
'######################
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
'Servicio para seleccionar una ruta, solo la carpeta
oDlgCarpeta = CreateUnoService ("com.sun.star.ui.dialogs.FolderPicker")
With oDlgCarpeta
'El título del cuadro de diálogo
.Title = "Selecciona el directorio donde guardar el nuevo archivo"
'El directorio predeterminado, si usas Windows puede ser D:\Mis documentos
'.DisplayDirectory = ConvertToUrl("/home/mau") 'fjcc ##########
End With
'Lo mostramos
If oDlgCarpeta.Execute() Then
'Obtenemos la ruta seleccionada por el usuario
sRuta = oDlgCarpeta.Directory
'La hoja donde se tomara el dato para el nombre del archivo
'oHoja = ThisComponent.getSheets().getByName("Hoja1") 'FJCC ###########
'oCelda = oHoja.getCellRangeByName("A1") 'FJCC ###########
'Construimos la ruta completa
sRuta = sRuta & "/" & "Informe.ods" 'fjcc ##############
'Guardamos el archivo
Informe.storeToURL( sRuta, mOpciones() ) 'Guardar Copia, storeToURL en vez de storeAsURL FJCC ##############
MsgBox "Archivo guardado correctamente"
Else
MsgBox "Proceso cancelado"
End If
-
- Mensajes: 15
- Registrado: Mié Jul 04, 2018 5:35 pm
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Buenas tardes,
Lo que necesito es que el usuario seleccione la carpeta donde se va a guardar Informe.ods después de copiar los datos de Base.ods, y una vez haya escogido la ruta la guarde con el nombre que desee.
Gracias....
Lo que necesito es que el usuario seleccione la carpeta donde se va a guardar Informe.ods después de copiar los datos de Base.ods, y una vez haya escogido la ruta la guarde con el nombre que desee.
Gracias....
Open office 4.1.3 windows 7 profesional
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Código: Seleccionar todo
doc = ThisComponent
fuente = doc.Sheets.getByName("Base_Agendados")
arranque = fuente.getCellRangeByName("D4")
cursor = fuente.createCursorByRange(arranque)
cursor.collapseToCurrentRegion
EndRow = cursor.RangeAddress.EndRow
EndColumn = cursor.RangeAddress.EndColumn
DataArrayFuente = cursor.DataArray
URL = convertToURL("/home/fjcc/Documents/Informe.ods")
Informe = StarDesktop.loadComponentFromURL(URL, "_blank", 0, Array())
oSheet1 = Informe.Sheets.getByName("Sheet1")
oCellRange = oSheet1.getCellRangeByPosition(0,0,EndColumn,EndRow - 3)
oCellRange.DataArray = DataArrayFuente
'######################
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
'Servicio para seleccionar una ruta, solo la carpeta
oDlgCarpeta = CreateUnoService ("com.sun.star.ui.dialogs.FolderPicker")
With oDlgCarpeta
'El título del cuadro de diálogo
.Title = "Selecciona el directorio donde guardar el nuevo archivo"
'El directorio predeterminado, si usas Windows puede ser D:\Mis documentos
'.DisplayDirectory = ConvertToUrl("/home/mau") 'fjcc ##########
End With
'Lo mostramos
If oDlgCarpeta.Execute() Then
'Obtenemos la ruta seleccionada por el usuario
sRuta = oDlgCarpeta.Directory
'La hoja donde se tomara el dato para el nombre del archivo
'oHoja = ThisComponent.getSheets().getByName("Hoja1") 'FJCC ###########
'oCelda = oHoja.getCellRangeByName("A1") 'FJCC ###########
'Construimos la ruta completa
Nombre = InputBox("Nombre del archivo")
If Right(Nombre, 4) <> ".ods" Then
Nombre = Nombre & ".ods"
End If
sRuta = sRuta & "/" & Nombre 'fjcc ##############
'Guardamos el archivo
Informe.storeToURL( sRuta, mOpciones() ) 'Guardar Copia, storeToURL en vez de storeAsURL FJCC ##############
MsgBox "Archivo guardado correctamente"
Else
MsgBox "Proceso cancelado"
End If
-
- Mensajes: 15
- Registrado: Mié Jul 04, 2018 5:35 pm
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Discúlpeme si tal vez no he sido claro, lo que quiero es que después de copiar la información de la base.ods, se cree un nuevo archivo y hay se copie la información seleccionada de la base.ods, luego salga un mensaje en el cual solicite en donde desea guardar el archivo con la ubicación y nombre que desee el usuario.
Para evitar usar esta parte:
URL = convertToURL("/home/fjcc/Documents/Informe.ods")
Informe = StarDesktop.loadComponentFromURL(URL, "_blank", 0, Array())
oSheet1 = Informe.Sheets.getByName("Sheet1")
oCellRange = oSheet1.getCellRangeByPosition(0,0,EndColumn,EndRow - 3)
oCellRange.DataArray = DataArrayFuente
Ya que como el archivo se va a compartir con varios usuarios y cada computador tiene una ruta distinta, y lo que se requiere es evitar cambiar la ruta ya que son mas de 20 usuarios, gracias.
Para evitar usar esta parte:
URL = convertToURL("/home/fjcc/Documents/Informe.ods")
Informe = StarDesktop.loadComponentFromURL(URL, "_blank", 0, Array())
oSheet1 = Informe.Sheets.getByName("Sheet1")
oCellRange = oSheet1.getCellRangeByPosition(0,0,EndColumn,EndRow - 3)
oCellRange.DataArray = DataArrayFuente
Ya que como el archivo se va a compartir con varios usuarios y cada computador tiene una ruta distinta, y lo que se requiere es evitar cambiar la ruta ya que son mas de 20 usuarios, gracias.
Open office 4.1.3 windows 7 profesional
Re: Copiar un rango de celdas de un libro a otro libro nuevo
Código: Seleccionar todo
doc = ThisComponent
fuente = doc.Sheets.getByName("Base_Agendados")
arranque = fuente.getCellRangeByName("D4")
cursor = fuente.createCursorByRange(arranque)
cursor.collapseToCurrentRegion
EndRow = cursor.RangeAddress.EndRow
EndColumn = cursor.RangeAddress.EndColumn
DataArrayFuente = cursor.DataArray
Informe = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array()) 'documento nuevo
oSheet1 = Informe.Sheets.getByIndex(0) 'la primera hoja
oCellRange = oSheet1.getCellRangeByPosition(0,0,EndColumn,EndRow - 3) 'Definimos un rango de celdas con el tamaño del cursor
oCellRange.DataArray = DataArrayFuente 'copiar los datos
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
'Servicio para seleccionar una ruta, solo la carpeta
oDlgCarpeta = CreateUnoService ("com.sun.star.ui.dialogs.FolderPicker")
With oDlgCarpeta
'El título del cuadro de diálogo
.Title = "Selecciona el directorio donde guardar el nuevo archivo"
'El directorio predeterminado, si usas Windows puede ser D:\Mis documentos
'.DisplayDirectory = ConvertToUrl("/home/mau")
End With
'Lo mostramos
If oDlgCarpeta.Execute() Then
'Obtenemos la ruta seleccionada por el usuario
sRuta = oDlgCarpeta.Directory
'Construimos la ruta completa
Nombre = InputBox("Nombre del archivo") 'preguntar por el nombre
If Right(Nombre, 4) <> ".ods" Then
Nombre = Nombre & ".ods"
End If
sRuta = sRuta & "/" & Nombre
'Guardamos el archivo
Informe.storeAsURL( sRuta, mOpciones() ) 'Guardar
'Informe.close(TRUE) 'si quiere cerrar el documento.
MsgBox "Archivo guardado correctamente"
Else
MsgBox "Proceso cancelado"
End If