Copiar una hoja en otro libro. Si no existe que la cree

Cada usuario trabaja con una hoja de cálculo y al finalizar le da al botón enviar.

Este botón copia su hoja, abre otra hoja donde si no existe una hoja con su nombre la crea y copia todos los datos que en ella hay. Me abre el libro destino, me crea la hoja si no existe, pero no me copia los datos, le he dado mil vueltas incluso creando la macro con el de excel directamente y el código es el mismo, pero se niega a copiar los datos (cuando no existe la hoja). Os paso el código tal cual lo tengo.

Private Sub CommandButtonEnviar_Click()
' guardamos el nombre de la hoja y la seleccionamos entera
nombre_usuario = Sheets(1).Name
Cells.Select
Selection.Copy
'abrimos el libro destino
Workbooks.Open Filename:="Formulario gestiones.xls"
On Error Resume Next
Sheets(nombre_usuario).Select
'comprobamos si existe o no la hoja
If ActiveSheet.Name <> nombre_usuario Then
'si no existe Añadimos la hoja
Sheets.Add
ActiveSheet.Select
ActiveSheet.Name = nombre_usuario
Sheets(nombre_usuario).Move after:=Sheets("resumen gestiones")
End If
'copiamos la hoja
Sheets(nombre_usuario).Select
ActiveSheet.Paste
ActiveWindow.Close
Range("A1").Select
Application.CutCopyMode = False
End Sub

Hay varios usuarios trabajando cada uno con su hoja de calculo y cada hoja se llama como el usuario por lo que cada uno de ellos envía el trabajo al finalizar el día a la nueva hoja de cálculo donde otra macro leerá todas las hojas que se han incluido para resumirlas en la primera hoja llamada resumen gestiones.

Saludos

Respuesta
1

Torment4 te dejo el código modificado para que te funciones como quieres.

El problema estaba en que el programa 'perdía' los datos a copiar porque se hacían otras operaciones entre el copiado y el pegado. Revísalo y me cuentas como te va. Saludos

Private Sub CommandButtonEnviar_Click()
''Modificada por FSerrano en 120227
''para torment4 en TodoExpertos.com
''copia los datos de la hoja actual a un libro de consolidación
'se captura el nombre del libro y de la hoja actual
libroactual = ActiveWorkbook.Name
nombre_usuario = Sheets(1).Name
'abrimos el libro destino
Workbooks.Open Filename:="Formulario gestiones.xls"
On Error Resume Next
Sheets(nombre_usuario).Select
'comprobamos si existe o no la hoja
If ActiveSheet.Name <> nombre_usuario Then
    'si no existe Añadimos la hoja
    Sheets.Add after:=Sheets("resumen gestiones")
    ActiveSheet.Name = nombre_usuario
End If
'se copia la hoja del libro inicial
Workbooks(libroactual).Sheets(nombre_usuario).Cells.Copy
'Se vuelve al libro de consolidación y se pegan los datos
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
ActiveWorkbook.Close savechanges:=xlYes
Application.CutCopyMode = False
End Sub

NO OLVIDES FINALIZAR Y PUNTUAR LA PREGUNTA

Perfecto.

Me despistó la prueba que hice generando un código directamente con la grabadora de macros de excel que generaba algo parecido a lo que yo tenía, pero con la grabadora no perdía lo copiado y con mi rutina de vb si lo perdía.

Muchas gracias.

Añade tu respuesta

Haz clic para o