Hola. Ayuda con macro

Hola Fernando, te agradezco cualquier ayuda que puedas darme con esto.
Es la siguiente macro
Sub ConsultaPoderes()
'Selecciona hoja "FICHA" del archivo "PODERES.XLS" y la elimina
Sheets("FICHA").Select
ActiveWindow.SelectedSheets.Delete
'Abre directorio para seleccionar archivo del cliente
ChDir "C:\_Poderes"
MiArchivo = Application.GetOpenFilename("Archivos de Microsoft Excel (*.xl*),*.xl*", , "SELECCIONE ARCHIVO A ABRIR")
Workbooks.Open MiArchivo
'Copia la hoja "FICHA" y la pega en "PODERES.XLS"
Sheets("FICHA").Select
Sheets("FICHA").Copy Before:=Workbooks("PODERES.xls").Sheets(1)
'FALTA :
'Código para : si no existe la hoja "FICHA" en "PODERES.XLS" que continue con el sgte. Paso
'Código para : si cancelo el abrir un archivo de cliente, que haga nada
'Código para : cerrar el archivo que se abrió y de donde se copió la hoja "FICHA"
End Sub
Gracias

1 respuesta

Respuesta
1
Este sería el código con los agregados que solicitaste:
Sub ConsultaPoderes()
'=== Control de Existencia de Hoja
Dim SheetEx As Object
On Error Resume Next
Set SheetEx = ActiveWorkbook.Sheets("FICHA")
If Err = 0 Then
'Selecciona hoja "FICHA" del archivo "PODERES.XLS" y la elimina
On Error GoTo 0
Application.DisplayAlerts = False
Sheets("FICHA").Delete
Application.DisplayAlerts = True
End If
'Abre directorio para seleccionar archivo del cliente
'ChDir "C:\_Poderes"
MiArchivo = Application.GetOpenFilename("Archivos de Microsoft Excel (*.xl*),*.xl*", , "SELECCIONE ARCHIVO A ABRIR")
'==== Control de selección de algún nombre
If MiArchivo Then
Workbooks.Open MiArchivo
Else
'Da un mensaje avisando que termina aquí, preo puedes eliminarlo si lo deseas.
MsgBox "Como no seleccionó archivo alguno, temino aquí la ejecución de la macro", vbExclamation, "ME VOY...."
Exit Sub
End If
'Copia la hoja "FICHA" y la pega en "PODERES.XLS"
Sheets("FICHA").Select
Sheets("FICHA").Copy Before:=Workbooks("PODERES.xls").Sheets(1)
'==== Graba y cierra el archivo con la hoja nueva.
Workbooks("PODERES.xls").Activate
ActiveWorkbook.Save
ActiveWorkbook.Close False
End Sub
Creo que cubrí todos, pero pruébalo y dime si es lo que querías, en cuyo caso, ya sabes... ;)
Un gran abrazo!
Fernando
En esta parte
'==== Graba y cierra el archivo con la hoja nueva.
Workbooks("PODERES.xls").Activate
ActiveWorkbook. Sabe
ActiveWorkbook.Close False
Yo no quiero cerrar el archivo poderes.xls, sino que el archivo desde donde selecciono la hoja ficha. Agradezco tu ayuda. Chao.
Simplemente anula o elimina la línea:
Workbooks("PODERES.xls").Activate
También puedes anular la siguiente si no quieres que el archivo original se grabe.
Un abrazo!
Fernando
"Me lo explicaron y lo olvidé,
lo leí y lo entendí,
lo hice y lo aprendí".
Ya había intentado con eso, pero no reuslta. Cierra Poderes.xls y deja abierta la planilla desde donde copia la hoja ficha.
Veamos:
Reemplaza las líneas por estas:
(Si conocas el nombre del archivo)
Workbooks("ArchFICHA.xls").Activate
ThisWorkbook. Save
ThisWorkbook.Close False
Fíjate si hace lo que precisas.
Un abrazo!
Fernando
Hola, el archivo a cerrar es el de la variable MiArchivo, por lo tanto, el archivo a cerrar puede ser cualquiera. De todas formas todo lo que contestaste me ha servido mucho. Gracias por toda tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas