Macro manda error en linea ActiveSheet.Copy

3 envíos / 0 nuevos
Último envío
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 3 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Macro manda error en linea ActiveSheet.Copy

Hola Paco, quisiera que me corrigieras algo que esta mal y no doy con el fallo

Pacomegias hizo esta macro ya algun tiempo atras, desde esa ocasion no he podido dar con la falla.

He estado buscando la macro en el foro pero no logro dar con ella ni con el tema asociado

Las 2 macros funcionan pero con detalles que menciono en la hoja

Dejo ejemplo del libro con las 2 macros (son la misma solo que con lineas de codigo cambiadas de lugar)

Dejo comentarios en una hoja.

Desde ya, Gracias por lo que puedas hacer

Edito:

Esta rutina esta sobrando porque tiene la otra que dice; 'eliminamos controles, macros y formulas. Solo no elimina Imagenes que esta si la queria por separado, como una rutina(creo llamarse así)

'Elimina el codigo de hoja copiada si existe codigo
'With ActiveSheet
'   With .Parent.VBProject.VBComponents(.CodeName)
'    .CodeModule.DeleteLines 1, .CodeModule.CountOfLines
'End With
'   End With

 

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 2 días 20 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Hola JoaoM¿será este el tema

Hola JoaoM

¿será este el tema del foro antiguo? http://www.necesitomas.com/copia-solo-valores-hoja-nuevo-libro-error-2-macros

sobre tus dudas:

*El error al copiar la hoja a mí no se me produce, así que no te puedo ayudar con esto

*Sobre guardar como...

muestras el cuadro de diálogo del programa, pero a continuación muestras el mensaje de que se ha guardado. 

En realidad cuando utilizas .show, eso es como una función que devuelve verdadero si consigue guardar el archivo, así que podrías comprobar con un IF si ha guardado el archivo o se ha cancelado, para mostrar el mensaje sólo si se guardó con éxito:

If Application.Dialogs(xlDialogSaveAs).Show Then

        ActiveWorkbook.Close True   'cierra 

       MsgBox "Guardado el libro con el nombre de hoja " & vbLf & SaveName  'Cambiar variable segun linea de guardar como, activa

End If

 

*Sobre el botón que se desactiva tras ejecutar la macro.

Parece que pulsar el botón y crear el nuevo libro y cerrarlo, la celda o la hoja activa se pierde, por eso el primer clic no ejecuta la macro, sino que activa el botón y lo selecciona, o si haces clic en una celda, activa esa celda. Prueba a activar una celda cualquiera de la hoja antes de teminar la macro

Range("a1").activate



 

 

 

------
Ya sé Excel, pero necesito más.

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 3 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Hola paco, buen dia a

Hola paco, buen dia a todos

Pues creo que si es el tema que indicas, ya enesa oportunidad, me daba dicho error y fijate que desde ahí he echo l oque he podido, hasta para copiar la hoja que necesite por el bendito error ese que al dia de hoy, sigue el mismo.

Dices en ese tema, SITO;

¿en qué se diferencia la hoja 2 de la 1?

no veo diferencia, pues las 2 tiene imagens, botones Control de formulario, codigo(puesto solo para la prueba), formulas y formas insertadas.

Diferencia ninguna porque he echo un Mover o copiar de hoja, solo que le coloco en ves de Hoja1(2) le hago un cambio a Hoja2, solo eso

 Sobre; "Sobre el botón que se desactiva tras ejecutar la macro." entendiste l oque yo quise que entendieras

mencioné lo de seleccionar otra celda es; coloco el cursor clicando en cualquier parte. Si trato de ejecutar la macro seguidamente (presionando el boton), como dije pareciera que no tiene macro asignada PERO vuelvo a darle y si ya ejecuta la macro. Lo de seleccionar una celda para tal, fue para mencionar que, al segundo intento si ejecuta.

Lo referente a; *Sobre guardar como...

muestras el cuadro de diálogo del programa, pero a continuación muestras el mensaje de que se ha guardado. 

 Si, muestar el cuadro dialogo Guardar como PERO, YO EN VES DE GUARDAR, lo que hago es Cancelar la ventana de Dialogo Guardar como, no guardo, Cancelo, al cancelar se va y viene nuevamente la ventana de dialogo, vuelvo a cancelar y me presenta el mensage de que se guardo la hoja tal y tal, bla bla

Hice esto;

SaveName = ActiveSheet.Name
''''''''''''''''''''''''''''
If Application.Dialogs(xlDialogSaveAs).Show Then
ActiveWorkbook.Close True
Exit Sub
    End If

MsgBox "Guardado el libro con el nombre de hoja " & vbLf & SaveName  'Cambiar variable segun linea de guardar como, activa
    Application.ScreenUpdating = True

End Sub

y ya no vuelve a re-aparecer PERO crea el libro (Libro1.xlsx(sin guardar)) y me lo deja abierto, deberia no crearlo una ves Cancelada la operacion ni darme el mensage.

Mi mal es que poco se de programar codigo, por eso todo el tiempo que llevo con dicho detalle, no solo por el Ingles si no tambien por signos y demas cosas que no se que significan y al dia de hoy (67) y la ocupacion, no me da para volver a sentarme en un pupitre (banco (silla de escuela))

Para evitarme rollos, lo que puedo hacer es:

en ves de usar la linea que abre la ventana de dialogo, usar alguna de estas

    ActiveWorkbook.SaveAs Filename:="C:\0\" & "Presupuesto " & Range("h12").Value & ".xlsx" 'nombre definido '1ª opcion. Desactivando las lineas 39 y 40

pero para esta, quisiera que NO ME PREGUNTE si quiero o no guardfar con macros. ¿se puede hacer paco? no pretendo que las copias vaian con macros.

Al parecer lo del boton SI funciona con     Range("a1").Activate al final del codigo