Copia SOLO valores de Hoja en nuevo libro Error en 2 macros

5 envíos / 0 nuevos
Último envío
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 2 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Copia SOLO valores de Hoja en nuevo libro Error en 2 macros

Abro nuevo tema para tratar de obtener ayuda a la solucion de este problema.

Quiero mencionar que hasta llegar a obtener este codigo, he tenido la ayuda de una persona muy valida, su apodo pacomegia, una persona muy gentil y comprensiva al momento de dar ayuda.

vengo al nuevo tema por que tengo estos dos codigos con la misma funcion pero; con cualquier de los dos codigos, en la hoja1 me dá error en la linea For Each forma In ActiveSheet.Shapes El error dice:

Se ha producido el error '40036' en tiempo de ejecucion:
Error definido por la aplicacion o el objeto.

Copia la hoja pero, no guarda, no elimina codigo, formulas ni botones

Los dos codigos tienen la MISMA funcion

Sub CopiaSOLO_ValoresHoja5() 'funciona bien en la Hoja2 pero no en la Hoja1
'Copia la hoja
ActiveSheet.Copy
'el nuevo libro se convierte en activo, así que copiamos y pegamos SOLO valores.
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

'eliminamos controles con macros
Dim forma As Shape
For Each forma In ActiveSheet.Shapes 'DA ERROR EN ESTA LINEA EJECUTANDO EN LA HOJA1
If forma.OnAction <> "" Then 'tiene macro asociada
forma.Delete
End If
Next

'Elimina el codigo de hoja copiada
With ActiveSheet
With .Parent.VBProject.VBComponents(.CodeName) 'DA ERROR EN ESTA LINEA COPIANDO LA HOJA1
.CodeModule.DeleteLines 1, .CodeModule.CountOfLines
End With
End With
ActiveSheet.Range("a2").Select 'Para que al abrir el nuevo libro, no presente seleccionada la hoja completa

' guardamos y cerramos el libro, segun la linea seleccionada.
Dim SaveName As String
SaveName = ActiveSheet.Name
Application.Dialogs(xlDialogSaveAs).Show
MsgBox "Guardado el libro con el nombre de hoja " & SaveName 'el nombre definido o celda. Cambiar segun la linea de guardar como, activa
End Sub

---------------------------------------------------------------------
Este dá el mismo error en la misma linea For Each forma In ActiveSheet.Shapes

Sub HojaActivaNuevoLibro() 'funciona bien en la Hoja2 pero no en la Hoja1
'Crea un libro para la hoja activa, sin botones ni macros ni fórmulas
Dim strRuta As String
Dim i As Integer
'copiamos la hoja
Application.ScreenUpdating = False
'Copia la hoja
ActiveSheet.Copy '1º DABA ERROR EN ESTA LINEA COPIANDO LA HOJA1, LUEGO DEJO DE DAR Y PASAR A LA OTRA

'donde guardar los archivos creados
strRuta = "C:\2"

'eliminamos controles con macros
Dim forma As Shape
For Each forma In ActiveSheet.Shapes 'A ESTA

If forma.OnAction <> "" Then 'tiene macro asociada
forma.Delete
End If
Next

'eliminamos el código de la hoja si existe
With ActiveSheet
With .Parent.VBProject.VBComponents(.CodeName)
.CodeModule.DeleteLines 1, .CodeModule.CountOfLines
End With
End With

'el nuevo libro se convierte en activo, así que copiamos y pegamos solo valores.
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Range("a2").Select 'Para que al abrir el nuevo libro, no presente seleccionada la hoja completa

' guardamos y cerramos el libro, segun la linea seleccionada.
ActiveWorkbook.SaveAs FileName:=strRuta & "\" & Range("DATA2").Value '1ª opcion. Desactivando las lineas 40 y 41
ActiveWorkbook.Close True 'cierra el libro
MsgBox "Guardado el libro en la ruta " & vbLf & strRuta & " \ " & " con el nombre " & Range("DATA2").Value & ".xlsx" 'el nombre definido o celda. Cambiar segun la linea de guardar como, activa
Application.ScreenUpdating = True
End Sub

En cualquier de los dos, quisiera tener la opcion de PODER seleccionar la extension, .xls o xlsx

Me hago la siguiente pregunta; ¿porque en la Hoja1 y no en la Hoja2? si son las 2 casi lo mismo
Las dos tienen imagen, formulas y formas insertadas y en la Hoja2 funcionan perfecto y en la Hoja1, este error

aquijano
Imagen de aquijano
Offline
última acción: Hace 11 años 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 20/07/2008 - 13:32
Puntos: 955
error '40036'

He buscado un poco en google y parece que se trata de un error un poco raro, que puede deberse a la conversion de un libro de 2003 a version 2007 ¿es ese tu caso?

las soluciones hablan de redefinir el código, o eliminar el codigo y volver a poner lo en un libro nuevo, pero no hay una explicacion clara ni para la causa ni para la solucion.

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

Te diria que no, perola cosa es así.

El codigo lo fui adquiriendolo desde esta misma WEB del amigo pacomegia su apodo.

Lo fui ordenando y construiendo (muy poco) en Office 2010, lo que hasta ahora es, gracias a pacomegia.

En el libro, con la hoja2, fuciona bien pero con la hoja1 dá dicho error. No lo hace en todos los libros, solo en algunos.

El codigo la cual la linea que da el error, lo coloco SOLO en Modulo nuevo y ejecuto, no pasa nada de error y funciona bien

=================================================================

La programación es una carrera entre ingenieros tratando de hacer mejores y mas grandes programas resistentes a idiotas y el universo haciendo mejores y grandes idiotas. Por ahora gana el universo

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 6 horas 58 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: error '40036'

Hola de nuevo.

vamos por partes:

1-dices que "Copia la hoja pero, no guarda, no elimina codigo, formulas ni botones".
claro, cuando se produce el error se interrumpe la ejecución de la macro, así que los pasos siguientes a la línea del error no se ejecutan.

Puedes ejecutar las macros paso a paso, mediante F8 desde el editor de vb. así ves paso a paso lo que ocurre. Activa la barra de herramientas de depuración en el editor de Vb para ver más opciones disponibles para ver lo que ocurre.

2-Respecto de tu libro original:

No pongas tu código en las hojas (no lo necesitas), pon todo el código en un módulo. Así, cuando copies la hoja a un nuevo libro irá sin macros, porque no las tiene.

3-Respecto de eliminar los botones con macro:

en el código hemos puesto la condición de que OnAction<>"", esto es válido para botones tipo control de formulario (que son los que tienes en tu hoja), pero no es válido para controles tipo ActiveX (por si más adelante añades más cosas).

4-Respecto del error.

¿en qué se diferencia la hoja 2 de la 1? Investiga las diferencias a ver por qué en una da error la macro y en otras no.

comprueba qué valor tiene ActiveSheet.Shapes.Count

------
Ya sé Excel, pero necesito más ahora en pdf

 

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

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

Hola pacomegia.

Referente a las 2 hojas, cuanto a codigo que contiene cada una, es igual, sin diferencas.

Elimine TODO el codigo de la hoja1 y funciono bien pero sin codigo en la hoja1

Cuanto a

¿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.

Pasa que algunos archivos(libros) contienen codigo en la hoja respectiva al cual pertenece el codigo, que por alguna razon tiene que ir en la hoja y no puede en un Modulo. No es el caso de este libro pero algunos si, por ello, la colocacion de codigo en las hojas para probar resultados

comprueba qué valor tiene ActiveSheet.Shapes.Count

¿?¿? me quedo aquen de saberlo hacer o verificar, miro y miro el codigo pero sol oveo caracteres que para mi, no pasan de ser simples caracteres por mi ignorancia en el conocimiento en programacion

lo de ejecutar mediante F8, lo hago pero se tranca en la o las lineas donde presenta el error, ¿que hacer? no lo se, para mi es como sentarme en el puesto de un piloto de aviones y me digan "pon el avion volando" NANAI NANAI.

Debido a mi falta de conocimiento, mucho me temo que quedare con el codigo así, pues lo ejecuto y en los libros que funcione, BIEN , en los libros que NO, pues simplemente lo hare manualmente.

Me dá pena contigo, y del cual te agradezco tu voluntad y ganas de ayudar, pero ayudar y sentirme incapaz de colaborar por falta de conocimiento, tampoco quiero seguir dandote trabajo, trabajo (colaboracon) altruista, al cual (repito) te agradezco imensamente l oque has echo por mi.

Salu2 y que tengas un feliz 31 y que recibas un año 2012 llego de prosperidad, amor y felicidad, junto a tus seres mas queridos

La programación es una carrera entre ingenieros tratando de hacer mejores y mas grandes programas resistentes a idiotas y el universo haciendo mejores y grandes idiotas. Por ahora gana el universo