Error al apretar cancelar en la ventana de Application.GetOpenFilename

Me aparece error 1004 al apretar cancelar en la ventana donde me pide que elija el archivo, el código esta así: Workbooks. Open(Application.GetOpenFilename...

Ayuda please :(

3 respuestas

Respuesta

¿Manda toda tu macro completa para ver si te puedo ayudar?

[email protected]

Ya chequeaste tal vez en la parte de:

if workbooks= false Then Exit sub

Respuesta
Sub SeleccionarArchivo()
Dim RutaArchivo As String
On Error Resume Next
'
RutaArchivo = Application.GetOpenFilename(Title:="Seleccionar Archivo")
If Not RutaArchivo = "Falso" Then
MsgBox RutaArchivo
Else
MsgBox "cancelado"
Exit Sub
End If
'
Workbooks.Open Filename:=RutaArchivo
End Sub
Respuesta

.12.01.17

Buenas, Camila

Para que te abra una ventana de selección de archivos, basta esta instrucción:

Application. GetOpenFilename

Esto debería resolverte el problema

En cambio, con la instrucción:

Workbooks. Open ...

Debes indicarle la ruta y nombre del archivo específicamente en el mismo código.

Dependiendo de qué quieras hacer usa una U otra, no ambas a la vez.

Espero que te haya ayudado.

Saludos
Fernando

.

Al usar solo Application. GetOpenFilename me dice que hace falta un objeto, error 424.

.

Efectivamente, esa instrucción te permite obtener la ruta y nombre de archivo, sin necesidad de escribirla como en la segunda sentencia.

Pero en ambos casos debes alojar el resultado en una variable para luego operar con ella.

Por ejemplo:

ElArchivo = Application. GetOpenFilename

Hará que, al seleccionar el archivo que desees, su dirección y nombre se aloje en la variable El archivo.

Luego podrás usarla para abrirlo

Algo así como esto:

ElArchivo = Application.GetOpenFilename
If Len(ElArchivo) > 0 Then
    Workbooks.Open ElArchivo
Else
'aquí va la instrucción para cuando cancelas la selección  
    MsgBox "No se seleccionó archivo alguno" & Chr(10) & "Rutina termina aquí"
    Exit Sub
End If

Esto evita aquel error que tenías cuando cancelabas la selección.

Saludos

Fer

.

.

Un ajuste menor:

ElArchivo = Application.GetOpenFilename
If ElArchivo > 0 Then
    Workbooks.Open ElArchivo
Else
'aquí va la instrucción para cuando cancelas la selección  
    MsgBox "No se seleccionó archivo alguno" & Chr(10) & "Rutina termina aquí"
    Exit Sub
End If

Usa esta mejor...

Sds

Fer

.

Al hacerlo así me arroja el error 91, variable de objeto o bloque with no establecido

Esta es la macro completa 

Public MiBase As Workbook
Public MatrizEspecialidades() As String
Public MatrizBotones(3) As String
Sub abrirbase()
    Dim Hojas As Worksheet
    Dim i As Integer
    Dim Posicion As Integer
    Dim primerapalabra As String
MiBase = Application.GetOpenFilename
If MiBase > 0 Then
    Workbooks.Open MiBase
Else
'aquí va la instrucción para cuando cancelas la selección
    MsgBox "No se seleccionó archivo alguno" & Chr(10) & "Rutina termina aquí"
    Exit Sub
End If
    Application.DisplayAlerts = False
    For Each Hojas In MiBase.Sheets
        If Hojas.Name = "Auxiliar" Or Hojas.Name = "Criterios" Or Hojas.Name = "Resultados" Then
            Hojas.Delete
        End If
    Next
    ReDim MatrizEspecialidades(MiBase.Sheets.Count - 2)
    For i = 0 To MiBase.Sheets.Count - 2
        MatrizEspecialidades(i) = MiBase.Sheets(i + 1).Name
    Next i
    MatrizBotones(0) = MiBase.Sheets(1).Range("B1").Value
    MatrizBotones(1) = MiBase.Sheets(1).Range("D1").Value
    For i = 2 To 3
        Posicion = InStr(1, MiBase.Sheets(1).Range("D1").Offset(, i - 1), " ")
        primerapalabra = Left(MiBase.Sheets(1).Range("D1").Offset(, i - 1), Posicion - 1)
        MatrizBotones(i) = primerapalabra
    Next i
    Application.DisplayAlerts = True
    MiBase.Activate
    MiBase.Sheets.Add After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Auxiliar"
    MiBase.Sheets.Add After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Criterios"
    MiBase.Sheets.Add After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Resultados"
    ThisWorkbook.Activate
End Sub

.

Hola, Camila

Por lo que alcanzo a ver el uso de "mibase" luego de abrir el archivo es lo que está ocasionando el problema.

Entonces, intenta quitando mibase. De todas las lineas. Creo que no afectará el funcionamiento de tu macro pues no parece haber otro libro involucrado.

Alternativamente, podría insertar esta instrucción:

Set MiBase = ActiveWorkbook

luego de Application.DisplayAlerts = False

Recuerda al final de la rutina, descargar esa variable con esta línea:

Set MiBase = Nothing

Prueba con alguna de ellas y dime si te funciona OK.

Saludos

Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas