ERROR 1004 EN TIEMPO DE EJECUCION

03/12/2005 - 19:23 por Edison Torres | Informe spam
Hola no se porque me esta saliendo el siguiente error:
Se ha producido el error "1004" en tiempo de ejecucion
Error en el metodo "Copy" de objeto "_Worksheet"
El codigo que utilizo es el siguiente:


Private Sub CommandButton7_Click()

' Declaramos las variables
Dim ws As Worksheet, wb As Workbook
Dim Archivo, Respuesta As VbMsgBoxResult

' Comprobamos que la hoja Reportes
' existe en el libro activo.
On Error Resume Next
Set ws = ActiveWorkbook.Worksheets("Reportes")
On Error GoTo 0
If Not ws Is Nothing Then
' Si la hoja Reportes existe
' Mostramos tres opciones: Guardar
' Descartar o Cancelar la operacion.
Respuesta = MsgBox( _
"?Desea guardar los cambios?", _
vbYesNoCancel + vbExclamation, _
"Cerrar el libro")
Select Case Respuesta
' Si la respuesta es Guardar...
Case vbYes
' Mostramos el dialogo de Guardar como...
Archivo = Application.GetSaveAsFilename( _
fileFilter:="Archivos Microsoft Excel (*.xls), *.xls")
' Si el usuario ha proporcionado la ruta
' y ha pulsado el boton guardar...
If Archivo <> False Then
' Copiamos la hoja Reportes a un libro nuevo...
ws.Copy
' Guardamos el nuevo libro usando la ruta y
' nombre de archivo proporcionados por el usuario.
ActiveWorkbook.SaveAs Archivo
Else
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End If
Case vbNo
' Si la respuesta es Descartar, mostramos
' un mensaje de aviso. Mas abajo procederemos
' a cerrar todos los libros sin guardar cambios
' y a cerrar Excel.
MsgBox "No se han guardado los cambios."
Case vbCancel
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End Select
' Ojo - tal como planteas la tarea, habra
' que forzosamente cerrar todos los archivos
' abiertos guardando o descartando los cambios.
' Personalmente me parece una caracteristica
' bastante irritante en cualquier aplicacion.
For Each wb In Workbooks
' Marcar todos los libros como guardados
' para evitar el aviso de guardar cambios.
wb.Saved = True
' Si quieres guardar los cambios forzosamente
' sustituye la instruccion "wb.Saved = True"
' por "wb.Save"
Next wb
With Application
' Congelar la pantalla
.ScreenUpdating = False
' Cerrar Excel
.Quit
End With
' Si no existe la hoja Reportes, mostramos
' un mensaje de aviso y salimos del macro.
Else
MsgBox _
"No existe la hoja ""Reportes"" en el libro activo"
End If
End Sub

Si pueden ayudarme les agradesco.

GRacias
 

Leer las respuestas

#1 :: Sergio A Campos H
04/12/2005 - 00:45 | Informe spam
Edison.

He probado el código que mencionas y me funciona perfecto. No estaría nada
mal las condiciones en las que lo ejecutas y desde donde lo estás llamando ó
ejecutando.

<!-- Tec. Inf. Sergio A Campos H -->

¿¿ Deseas colaborar en mi sitio ??, entra y envíame tus sugerencias de
contenido, ! se acepta de todo tipo !
http://mx.geocities.com/sergioacamposh
http://sergioacamposh.mundopc.net


"Edison Torres" escribió en el
mensaje news:
Hola no se porque me esta saliendo el siguiente error:
Se ha producido el error "1004" en tiempo de ejecucion
Error en el metodo "Copy" de objeto "_Worksheet"
El codigo que utilizo es el siguiente:


Private Sub CommandButton7_Click()

' Declaramos las variables
Dim ws As Worksheet, wb As Workbook
Dim Archivo, Respuesta As VbMsgBoxResult

' Comprobamos que la hoja Reportes
' existe en el libro activo.
On Error Resume Next
Set ws = ActiveWorkbook.Worksheets("Reportes")
On Error GoTo 0
If Not ws Is Nothing Then
' Si la hoja Reportes existe
' Mostramos tres opciones: Guardar
' Descartar o Cancelar la operacion.
Respuesta = MsgBox( _
"?Desea guardar los cambios?", _
vbYesNoCancel + vbExclamation, _
"Cerrar el libro")
Select Case Respuesta
' Si la respuesta es Guardar...
Case vbYes
' Mostramos el dialogo de Guardar como...
Archivo = Application.GetSaveAsFilename( _
fileFilter:="Archivos Microsoft Excel (*.xls), *.xls")
' Si el usuario ha proporcionado la ruta
' y ha pulsado el boton guardar...
If Archivo <> False Then
' Copiamos la hoja Reportes a un libro nuevo...
ws.Copy
' Guardamos el nuevo libro usando la ruta y
' nombre de archivo proporcionados por el usuario.
ActiveWorkbook.SaveAs Archivo
Else
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End If
Case vbNo
' Si la respuesta es Descartar, mostramos
' un mensaje de aviso. Mas abajo procederemos
' a cerrar todos los libros sin guardar cambios
' y a cerrar Excel.
MsgBox "No se han guardado los cambios."
Case vbCancel
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End Select
' Ojo - tal como planteas la tarea, habra
' que forzosamente cerrar todos los archivos
' abiertos guardando o descartando los cambios.
' Personalmente me parece una caracteristica
' bastante irritante en cualquier aplicacion.
For Each wb In Workbooks
' Marcar todos los libros como guardados
' para evitar el aviso de guardar cambios.
wb.Saved = True
' Si quieres guardar los cambios forzosamente
' sustituye la instruccion "wb.Saved = True"
' por "wb.Save"
Next wb
With Application
' Congelar la pantalla
.ScreenUpdating = False
' Cerrar Excel
.Quit
End With
' Si no existe la hoja Reportes, mostramos
' un mensaje de aviso y salimos del macro.
Else
MsgBox _
"No existe la hoja ""Reportes"" en el libro activo"
End If
End Sub

Si pueden ayudarme les agradesco.

GRacias

Preguntas similares