Macro para abrir explorador de windows no se ejecuta completamente

Con un código abro una cuadro de diálogo que me permite seleccionar un archivo Excel que deseo abrir. Todo funciona bien, hasta que al hacer click en el botón "Abrir", el archivo no se abre ni se presenta mensaje de error.

En una respuesta a otra pregunta similar del foro indicaban habilitar la referencia "Microsoft Windows 11ó 12, Object Library", pero sólo tengo disponible "Microsoft Windos 14.0 Objetc Library" y no funciona.

El código es el siguiente:

Sub Main()

'

' Main Macro

Dim test As String

SelectFiles test

Debug. Print test

End Sub

Sub SelectFiles(ByRef test As String)

Dim iFileSelect As FileDialog

Set iFileSelect = Application.FileDialog(msoFileDialogOpen)

 With iFileSelect

AllowMultiSelect = True

Title = "Seleccione archivo Payroll"

Filters.Clear

Filters.Add "Archivo Payroll", "*.****"

InitialView = msoFileDialogViewDetails

If .Show = -1 Then

Dim vrtSelectedItem

For Each vrtSelectedItem In iFileSelect.SelectedItems

 test = vrtSelectedItem

 Next vrtSelectedItem

 End If

 End With

Set iFileSelect = Nothing

End Sub

1 respuesta

Respuesta

No es necesario que uses tu macro "Main" ya que al final tu variables "test" no le pasa ningún parámetro a tu procedimiento "SelectFiles". Eso como para comenzar.

Para usar un objeto "FileDialog" de Office, y sus propiedades, no es necesario activar las referencias que mencionas, basta la referencia a "Microsoft Office xx.0 Object Library" en donde "xx" es el equivalente a tu versión de Microsoft Office.

Sobre los problemas que tienes, no olvides que cuando usas la instrucción "With" sirve para ejecutar una serie de acciones sobre un mismo objeto, en este caso estás usando la mal. Esta parte de aquí, por ejemplo:

 With iFileSelect
AllowMultiSelect = True
Title = "Seleccione archivo Payroll"
Filters.Clear
Filters.Add "Archivo Payroll", "*.****"
InitialView = msoFileDialogViewDetails
... etc

Cambiala por:

 With iFileSelect
.AllowMultiSelect = True
.Title = "Seleccione archivo Payroll"
.Filters.Clear
.Filters.Add "Archivo Payroll", "*.****"
.InitialView = msoFileDialogViewDetails
... etc

Revisa esas cosas y comentas

Abraham Valencia

¡Gracias! 

De nada, feliz año :)

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas