Excel - Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

 
Vista:
sin imagen de perfil

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Ramón (77 intervenciones) el 27/12/2023 14:01:40
Mediante el código:
1
2
Sheets("DATOS_COMUNES").Copy
              Workbooks.Open "C:\DirectorioBase\ANALISIS_de_Datos_Comunes_con_EXCEL.xlsm"
… primero copio la Hoja de “DATOS_COMUNES” de libro .xlsm activo desde el que ejecuto el código anterior y después abro el archivo “ANALISIS_de_Datos_Comunes_con_EXCEL.xlsm”, todo con el fin de pegar en él después, en su Hoja (2) -llamada “DATOS”- la Hoja copiada mediante la primera línea de código, pero al hacerlo con la línea de código:
1
Sheets("DATOS").Range("A1").Paste
... el editor, subrayando la última línea de código escrita me manda el mensaje de que "El objeto no admite esta propiedad o método". Entiendo que se refiere al 'Paste'...y es que intuyo que una cosa es pegar un rango de celdas definido y predeterminado, para lo que el método de pegado anterior es válido, y otra muy distinta el pegar el contenido íntegro de una hoja, no?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Antoni Masana (2478 intervenciones) el 28/12/2023 21:19:46
Aquí veo un problema de conceptos.

Copias una HOJA, no el contenido de la hoja

1
Sheets("DATOS_COMUNES").Copy

Y quieres pegarla en una celda:

1
Sheets("DATOS").Range("A1").Paste

En este ejemplo la macro1 copia una hoja del libro1 al libro2

1
2
3
Sub Macro1()
    Sheets("Hoja1").Copy Before:=Workbook("Libro2.xlsx").Sheets(5)
End Sub

Y la macro2 copia el contenido de la hoja1 en la hoja2, en este caso es del mismo libro pero podría ser otro perfectamente

1
2
3
4
5
6
7
8
9
10
11
Sub Macro2()
    Sheets("Hoja1").Select
    Range("A1").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
 
    Sheets("Hoja2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub

Y lo que haces es mezclar conceptos.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Ramón (77 intervenciones) el 29/12/2023 10:08:16
Gracias Antoni, la verdad es que algo de lo que me dices intuía, aunque sin llegar al fondo del asunto...

Pero verás: habiéndome inclinado por la primera opción de las dos que me sugieres, he escrito:

1
2
3
Workbooks.Open "C:\DirectorioBase\Libro2.xlsm"
                Workbooks("Libro1").Activate
                Sheets(2).Copy Before:=Workbook("Libro2.xlsm").Sheets(2)

Pretendiendo que, una vez abierto el Libro2 y activado el Libro1, me copie en la Hoja2 del Libro2, la Hoja2 del Libro1, pero me da: "ERROR de compilación: No se ha definido Sub o Function", sombreándome en la tercera línea la palabra "Workbook"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Antoni Masana (2478 intervenciones) el 29/12/2023 18:46:23
El código debe estar así:

1
2
3
4
5
Sub Copiar_Hoja_En_Libro2()
    Workbooks.Open "C:\DirectorioBase\Libro2.xlsm"
    Workbooks("Libro1").Activate
    Sheets(2).Copy Before:=Workbook("Libro2.xlsm").Sheets(2)
End Sub

Esta macro debe estar creada en el Libro1 ya que es el primero que se abre.
La extensión del Libro1 debe ser .xslm
El nombre de la macro es solo de ejemplo.

Otro detalle a tener en cuenta es que solo puedes copiar la hoja UNA sola vez.
Si modificas la hoja del libro1 y la quieres copiar en el libro2 por segunda vez, da un error porque ya existe una hoja con el mismo nombre y no, no sobreescribe como cuando copias un fichero y ya existe otro con el mismo nombre.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Ramón (77 intervenciones) el 29/12/2023 11:23:51
Maravilloso, Antoni, el segundo método -si bien añadiendo un 'ActiveSheet' antes de la selección de una celda... que dados mis muy pobres conocimientos de vba me ha costado lo suyo...-

Pero una cosilla más Antoni (antes de meterme en el gran reto que tengo por delante: crear en el nuevo Libro2 Gráficos y Hojas Dinámicas predefinidas...), ¿cómo hago para que la Hoja2 del Libro2 en el que le he pegado el contenido de la Hoja2 del Libro1, mantenga el ancho de las columnas de origen del Libro1?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Ramón (77 intervenciones) el 29/12/2023 12:57:18
Añado a mi pregunta anterior:

Tras el proceso de copia anterior, pretendía cerrar el Libro1 de los dos abiertos, pero al escribir el código:

Workbooks("Libro1.xlsm").Close savechanges:=True

... me cierra LOS DOS libros ¿¿??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Antoni Masana (2478 intervenciones) el 29/12/2023 19:38:31
Al ejecutar la macro en el Libro1 esta depende del libro en el que está.
Te lo iba a contar con el ejemplo de padres e hijos que es como me lo explicaron a mi pero no se si es suficientemente claro.

Utilizare un versión m´s vegetal:
Digamos que abres el Libro1 que es el tronco principal del árbol.
Ejecutas la macro que es una rama del árbol.
Y esta macro abre un libro que cuelga de esta rama como un fruto.

Y ahora que ya tenemos la imagen ¿Que pasa si corto el tronco? Pues que cae el tronco, la rama y el fruto.

Pero eso no pasa en mi versión de Excel.
He probado estas dos macros y en los dos casos deja Activo el Libro2 y no ejecuta el MsgBox.

1
2
3
4
5
6
7
8
9
10
11
12
Sub Macro1()
    Workbooks.Open "C:\DownLoad\Libro2.xlsm"
    Workbooks("Libro1.xlsm").Activate
    Workbooks("Libro1.xlsm").Close savechanges:=True
    MsgBox "Fin de la Macro"
End Sub
 
Sub Macro2()
    Workbooks.Open "C:\DownLoad\Libro2.xlsm"
    Workbooks("Libro1.xlsm").Close savechanges:=True
    MsgBox "Fin de la Macro"
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Ramón (77 intervenciones) el 30/12/2023 06:18:45
Antoni, no entiendo lo que quieres decir con "Pero eso no pasa en mi versión de Excel."

Porque lo de cerrar el Libro1.xlsm, y dejar abierto el Libro2.xlsm, hemos quedado en que es metafisicamente imposible, no?

P.S.- Una cosa curiosa: si finalmente no fuerzo el cierre de ninguno de los dos libros puedo cerrar manualmente el Libro1 y ello no impide que se mantenga abierto el Libro2... Puede que esta sea la opción que me queda: lanzar al usuario el mensaje de que cierre el Lbro1 y trabaje con el Libro2, que es lo que pretendo en realidad.

P.S2.- Como prueba he incluido en el Open del 'ThisWorkbook' del Libro2, pero no he tenido éxito: me sigue cerrando los dos libros, el tronco, la rama y el frfuto...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Antoni Masana (2478 intervenciones) el 30/12/2023 17:25:24
Se ve que es un fallo en alguna versión de Excel.
Yo tengo la versión de 2016 y hay cosas que cambian respecto a versiones anteriores.

He probado las dos macros que te envíe y esperaba tener el mismo resultado que en tu caso pero o sorpresa en mi Excel no se cierra el libro2.
Supongo que en mi versión al abrir el segundo libro lo desvincula del primero y por eso no se cierra.

En la prueba esperaba que me pasase lo mismo que a ti pero me da resultados diferentes.

No puedo ayudarte porque no puedo hacer que no haga una cosa que no hace.

Saludos.
\\//
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Antoni Masana (2478 intervenciones) el 30/12/2023 17:27:59
Se me acaba de ocurrir un disparate.
Lo pruebo y te cuento.

A mi me ha funcionado, te envío los dos libros para que lo pruebes.
El Libro1 Abre el Libro2, al abrirlo ejecuta la macro Workbook_Open y cierra el libro1.

1
2
3
Private Sub Workbook_Open()
    Workbooks("Libro1.xlsm").Close savechanges:=True
End Sub

Pero hay que pulirlo un poco.

Opción 1
1
2
3
4
Private Sub Workbook_Open()
    On Error Resume Next
    Workbooks("Libro1.xlsm").Close savechanges:=True
End Sub

Un poco más elegante

Opción 2
1
2
3
4
5
6
7
Private Sub Workbook_Open()
    For Each wb In Workbooks
        If wb.Name = "Libro1.xlsm" Then
            Workbooks("Libro1.xlsm").Close savechanges:=True
        End If
    Next wb
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Ramón (77 intervenciones) el 31/12/2023 18:59:51
Antoni, dices que: "Se me acaba de ocurrir un disparate." jajajajaja

Ese 'disparate' también se me ocurrió ayer, pero me temo que sin resultado... :-(

Pero vamos, para nada es importante: al final del proceso lanzo un UserForm a modo de MsgBox informando al usuario que a continuación, en primer plano, se le presenta el 'Libro1.xlsm' para que si así lo quiere lo cierre y que en segundo plano está dispuesto el 'Libro2.xlsm' creado, que a la sazón cuenta con dos hojas: en la primera aparece escueta y simplemente el nombre del Libro2, y en la segunda hoja de este Libro2 el contenido de la Hoja2 del Libro1 recién copiados.

La idea es que en la Hoja1 del Libro2 el usuario inserte Gráficos u Hojas Dinámicas basadas en los datos de la Hoja2 de ese Libro2... pero esa es otra idea que tengo que investigar: es territorio inexplorado, peeeeero: ¿alguna sugerencia? ¿un buen vídeo?...

Feliz año 2024 a todos los aforados que lean esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Antoni Masana (2478 intervenciones) el 31/12/2023 20:03:48
Te puedo sugerir algunas paginas:

En esta página tienes muchas respuestas a los temas que quieres tratar:
https://wordexperto.com/

Esta es otra que cuelga videos muy interesantes:
https://smartprosoluciones.com/
https://smartprosoluciones.com/entrenamientosmartexcel/

Hay mas pero estas son las dos mejores que conozco.
Después esta la opción GooGle y poner Excel Tablas Dinámicas o Excel Gráficos y sale un montón de páginas.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pegar el contenido íntegro de una hoja de un libro en otra de un libro distinto.

Publicado por Ramon (77 intervenciones) el 31/12/2023 23:22:09
Esto me ha recordado a: https://youtu.be/uaeLtGvLxF0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar