Planilla se cierra al no seleccionar nada.

Estimados estoy copiando daos de un libro a otro... Con la lainstrucciion Application. GetOpenFilename, necesito validar si no se selecciona nada que se mantenga el libro abrierto ya que si pongo cancelo el cuadro de dialogo se cierra la planilla. Este es parte del codigo:

Dim MyResultados As String 'donde guardo el nombre del libro de resultados
Dim MyInfo As String 'donde guardo el nombre del libro que voy a abrir
Dim InfoPath As String 'donde se guada la información de la ubicacion del libro de info
On Error Resume Next
Application.ScreenUpdating = False 'para que no se vea en pantalla la apertura del libro (tarda menos)

'ClearData 'función para limpiar la información de Data
MyResultados = ThisWorkbook.Name
InfoPath = Application.GetOpenFilename 'display para abrir libro de info
On Error Resume Next
Workbooks.Open Filename:=InfoPath 'abro el libro
MyInfo = ActiveWorkbook.Name
Worksheets("Datos sin procesar").Select 'copiando información
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("A1").Select
ActiveSheet.Range("$A$1:$R$10000").AutoFilter Field:=6, Criteria1:="PL"
ActiveSheet.AutoFilter.Range.Copy
'[A1].CurrentRegion.Select
'Selection. Copy
Workbooks(MyResultados). Activate 'pegado de información
Worksheets("BASE"). Activate
Range("A3"). Activate
ActiveSheet. Paste
Worksheets("Resultados"). Activate 'para volver a la hoja de resultados
Application.DisplayAlerts = False 'para que no salte cuadro de diálogo de clipboard
Workbooks(MyInfo).Close savechanges = False 'cierro el libro de info

2 Respuestas

Respuesta
1

Esta es tu macro con algunos cambios, después del infopath puse una condición de salida que en caso de que canceles te saquede la macro sin cerrar el programa

Sub test()
Dim MyResultados As String 'donde guardo el nombre del libro de resultados
Dim MyInfo As String 'donde guardo el nombre del libro que voy a abrir
Dim InfoPath As String 'donde se guada la información de la ubicacion del libro de info
On Error Resume Next
Application.ScreenUpdating = False 'para que no se vea en pantalla la apertura del libro (tarda menos)
'ClearData 'función para limpiar la información de Data
MyResultados = ThisWorkbook.Name
InfoPath = Application.GetOpenFilename 'display para abrir libro de info
If InfoPath = "Falso" Then GoTo sal
On Error Resume Next
Workbooks.Open Filename:=InfoPath 'abro el libro
MyInfo = ActiveWorkbook.Name
Worksheets("Datos sin procesar").Select 'copiando información
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("A1").Select
ActiveSheet.Range("$A$1:$R$10000").AutoFilter Field:=6, Criteria1:="PL"
ActiveSheet.AutoFilter.Range.Copy
'[A1].CurrentRegion.Select
'Selection. Copy
Workbooks(MyResultados). Activate 'pegado de información
Worksheets("BASE"). Activate
Range("A3"). Activate
ActiveSheet. Paste
Worksheets("Resultados"). Activate 'para volver a la hoja de resultados
Application.DisplayAlerts = False 'para que no salte cuadro de diálogo de clipboard
Workbooks(MyInfo).Close savechanges = False 'cierro el libro de info
sal:
End Sub
Respuesta
1

[Hola

Es una mala costumbre usar "On Error Resume Next" de no ser estrictamente necesario, por si acaso.

Sobre tu problema puntual prueba así:

InfoPath = Application.GetOpenFilename
If InfoPath = False Then
    MsgBox "Cancelaste"
    Exit Sub
End If
Workbooks.Open Filename:=InfoPath 'abro el libro

Comentas

Abraham Valencia

Gracias abraham por tu pronta respuesta... me manda un error '13' : no coinciden los tipos aquí es donde se cae "If InfoPath = False Then"

Perdón abraham olvide mencionar que se cae cuando selecciono un archivo para abrir.

Cambia así:

Dim Infopath as Variant

Saludos]

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas