Excel - Como copiar una hoja de un libro en otro guardado con macro

 
Vista:
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como copiar una hoja de un libro en otro guardado con macro

Publicado por santi (24 intervenciones) el 29/10/2018 13:03:34
Primero dar las gracias por echarme una mano con esto. Soy un novato que se inicia en el mundo de las macros y necesito de expertos como vosotros para solucionar problemas e intentar aprender poco a poco.


Tengo esta macro:

Sub Copiarhoja()

ThisWorkbook.ActiveSheet.Copy before:=Workbooks.Add.Worksheets(1)

End Sub

Con ella consigo copiar la hoja en un libro nuevo, pero no se como modificar esta macro para que haga todo lo que necesito. Lo que necesito es que me copie la hoja activa en un archivo existente guardado en el servidor, elimine los vinculos de la hoja de origen y elimine el boton que lanza la macro..

El archivo de origen es el que tengo abierto. La ruta donde está el archivo de destino es "P:\BaseTecnico\1-DOCUMENTOS REFERENCIA\Master XXXX-M-XXX CLIENTE-OBRA.xltm".

En este archivo master hay 8 hojas, donde la hoja COM_EQUIPOS ya existe y está la tercera hoja del libro. Esa hoja que ya existe en el libro de destino necesito que se sustituya por la COM_EQUIPOS del libro de origen.


Como hago que la copie en el libro de destino Master XXXX-M-XXX CLIENTE-OBRA.xltm que está en la ruta "P:\BaseTecnico\1-DOCUMENTOS REFERENCIA\Master XXXX-M-XXX CLIENTE-OBRA.xltm".
Como hacer que sustituya la hoja COM_EQUIPOS que ya existe en el libro Master XXXX-M-XXX CLIENTE-OBRA.xltm por la que quiero copiar?.

También necesito que la hoja que copie en el libro master, la información que contiene sean solo datos, Esto quiere decir que en el libro original la información de esa hoja está vinculada a otras hojas del mismo libro, pero necesito que al copiarlo en el nuevo libro no se mantengan los vínculos con el libro de origen.

He incorporado un botón en la hoja de origen para activar la macro. Como hago que elimine de la hoja copiada el botón que hemos usado para iniciar la macro.

Muchísimas gracias por la ayuda.
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

Como copiar una hoja de un libro en otro guardado con macro

Publicado por Antoni Masana (2477 intervenciones) el 30/10/2018 08:10:42
En principio es bastante fácil.

Abres el libro con los datos a copiar y los vínculos.
Activas Grabar MACRO

* Abrir archivo destino: "P:\BaseTecnico\1-DOCUMENTOS REFERENCIA\Master XXXX-M-XXX CLIENTE-OBRA.xltm".
* Eliminar hoja COM_EQUIPOS de archivo destino:
* Ir al libro origen
* Copiar hoja COM_EQUIPOS en el libro destino.
* Ir al libro destino.
* ir a la hoja COM_EQUIPOS
* Seleccionar toda la hoja y copiar.
* Pagar VALORES
* Seleccionar BOTON y borrarlo.
* Guardar Libro Destino.
* Cerrar Libro Destino.

Parar MACRO.

Y hasta aquí tienes una MACRO que hace el 99% de lo que quieres y el 1% es añadir controles por si falla.

IMPORTANTE: Antes de crear la macro o de probarla realiza siempre copias de seguridad o podrías perder toda la información. Si la macro falla la única forma de volver al principio es recuperar la copia de los dos libros.

Cuando tengas la MACRO seguimos hablando.

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
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como copiar una hoja de un libro en otro guardado con macro

Publicado por santi (24 intervenciones) el 30/10/2018 18:14:35
Buenas tardes,

He conseguido hacer esta macro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub COPIAHOJA()
'
 
    Workbooks.Add Template:= _
        "P:\BaseTecnico\1-DOCUMENTOS REFERENCIA\Master XXXX-M-XXX CLIENTE-OBRA.xltm"
    Windows("DVA - copia1").Activate
    Sheets("COM_EQUIPO").Select
    Sheets("COM_EQUIPO").Copy Before:=Workbooks("Master XXXX-M-XXX CLIENTE-OBRA1" _
        ).Sheets(3)
    Range("A2:F419").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("COM_EQUIPOS").Select
    ActiveWindow.SelectedSheets.Delete
End Sub

Funciona bien si la ejecuto con el nombre del libro DVA - copia1. Tengo una plantilla en un servidor con el nombre DVA - copia que al abrirla se convierte en DVA - copia1. El problema lo tengo cuando guardo esa plantilla con otro nombre. Yo abro la plantilla y la guardo en el servidor como hoja de excell habilitada para macros con el nombre del proyecto en el que esté trabajando. Y después de muchas revisiones de ese documento, cada una con un numero de revisión rev. diferente, si cierro el proyecto es cuando debo ejecutar la macro.

Al guardarla con el nombre del proyecto no funciona la macro. Que tengo que modificar donde dice Windows("DVA - copia1").Activate para que funcione.

Muchas gracias por tu ayuda
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

Como copiar una hoja de un libro en otro guardado con macro

Publicado por Antoni Masana (2477 intervenciones) el 31/10/2018 06:57:09
Esto soluciona el problema del libro DVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ub COPIAHOJA()
    Dim Ruta as String, Arch as String, Hoja as String, YoSoy as String,
 
    Ruta = "P:\BaseTecnico\1-DOCUMENTOS REFERENCIA\"
    Arch = "Master XXXX-M-XXX CLIENTE-OBRA.xltm"
    Hoja = "COM_EQUIPO"
 
    YoSoy =  ActiveWorkbook.Name
 
    Workbooks.Add Template:= Ruta + Arch
    Windows(YoSoy).Activate
    Sheets(Hoja).Select
    Sheets(Hoja).Copy Before:=Workbooks(Arch).Sheets(3)
    Range("A2:F419").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, _
                           Operation:=xlNone, _
                           SkipBlanks:=False, _
                           Transpose:=False
    Sheets(Hoja).Select
    ActiveWindow.SelectedSheets.Delete
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
1
Comentar
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como copiar una hoja de un libro en otro guardado con macro

Publicado por santi (24 intervenciones) el 31/10/2018 08:58:58
Hola Antoni,

He probado la macro y me da error 9 en la línea " Sheets(Hoja).Copy Before:=Workbooks(Arch).Sheets(3)" . Entiendo la lógica de tu macro, pero no se porque no funciona.

Gracias por tu ayuda
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

Como copiar una hoja de un libro en otro guardado con macro

Publicado por Antoni Masana (2477 intervenciones) el 31/10/2018 09:56:49
Un pequeño lapsus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub COPIAHOJA()
    Dim Ruta As String, Nomb As String, Exte As String, Hoja As String, YoSoy As String
 
    Ruta= "P:\BaseTecnico\1-DOCUMENTOS REFERENCIA\"
    Nomb = "Master XXXX-M-XXX CLIENTE-OBRA"
    Exte = ".xltm"
    Hoja = "COM_EQUIPO"
 
    YoSoy =  ActiveWorkbook.Name
 
    Workbooks.Add Template:= Ruta + Nomb + Exte
    Windows(YoSoy).Activate
    Sheets(Hoja).Select
    Sheets(Hoja).Copy Before:=Workbooks(Nomb).Sheets(3)
    Range("A2:F419").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, _
                           Operation:=xlNone, _
                           SkipBlanks:=False, _
                           Transpose:=False
    Sheets(Hoja).Select
    ActiveWindow.SelectedSheets.Delete
End Sub

En la línea del error debe ser el nombre del archivo sin extensión.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como copiar una hoja de un libro en otro guardado con macro

Publicado por santi (24 intervenciones) el 31/10/2018 10:24:27
Muchas gracias Antoni,

He realizado una pequeña modificación en la macro y ahora funciona. Esta es la macro definitiva:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub COPIAHOJA()
 
    Dim Ruta As String, Nomb As String, Nomb2 As String, Exte As String, Hoja As String, YoSoy As String, Hoja2 As String
 
    Ruta = "P:\BaseTecnico\1-DOCUMENTOS REFERENCIA\"
    Nomb = "Master XXXX-M-XXX CLIENTE-OBRA"
    Nomb2 = "Master XXXX-M-XXX CLIENTE-OBRA1"
    Exte = ".xltm"
    Hoja = "COM_EQUIPO"
    Hoja2 = "COM_EQUIPOS"
 
    YoSoy = ActiveWorkbook.Name
 
    Workbooks.Add Template:=Ruta + Nomb + Exte
    Windows(YoSoy).Activate
    Sheets(Hoja).Select
    Sheets(Hoja).Copy Before:=Workbooks(Nomb2).Sheets(3)
    Range("A2:F419").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, _
                           Operation:=xlNone, _
                           SkipBlanks:=False, _
                           Transpose:=False
    Sheets(Hoja2).Select
    ActiveWindow.SelectedSheets.Delete
End Sub

He añadido un nombre (Nomb2) por que al abrir la plantilla el nombre cambia añadiéndose un 1. Y he añadido un nombre de hoja (hoja2) por que la hoja a eliminar es COM_EQUIPOS y la que pegamos es COM_EQUIPO.

Con esto la macro funciona perfectamente.

Solo una pregunta. Al final de todo, me pide que acepte eliminar la hoja. Esto se puede hacer sin que me lo pregunte, que la elimine directamente?.

Gracias, me has sido de gran ayuda y he aprendido mucho.

Un saludo
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