Copiar SOLO Valores. Error 2 macros con la misma funcion

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Copiar SOLO Valores. Error 2 macros con la misma funcion

Notapor JoaoM » 26 Dic 2011 23:36

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, una persona muy gentil y comprensiva al momento
de dar ayuda pero, hace tiempo que no se nada de ella.

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 libro (para las pruebas), las dos hojas contienen imagenes y formas
insertadas, demas de formulas, codigo y botones, no pretendo que me elimine
ni formas ni imagenes, de echo NO LAS ELIMINA, pero lo digo como referencia
y las 2 hojas son casi gemelas
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 pero en la Hoja1, este error
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
JoaoM
Miembro Frecuente
Miembro Frecuente
 
Registrado: 27 Ago 2010 19:55

Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: ALEJANDROREYES, Google [Bot] y 6 invitados