Abrir archivos desde una macro

En algunas situaciones al tener una macro que deba abrir un archivo desde cierta ubicación de nuestro equipo o unidad de red para poder procesarlo o leer información del mismo, muchos de los que van empezando con la programación de macros suelen tener en su código algo similar a esto:

Sub AbrirArchivo()
Dim libro As Workbook
Set libro = Workbooks.Open("C:\Users\Luis Antonio\Documents\WebScraping.xlsm")
' Código para extraer o procesar información del libro...
End Sub

Este código anterior es directo, pero tiene una desventaja, el nombre del archivo esta incrustado dentro del código. Si se deseará abrir  un archivo distinto tendría que cambiarse el código algo nada práctico y eficiente.

Sub AbrirArchivo2()
Dim libro As Workbook
Dim ruta As String
ruta = ThisWorkbook.Sheets("Setup").Range("A1")
Set libro = Workbooks.Open("C:\Users\Luis Antonio\Documents\WebScraping.xlsm")
' Código para extraer o procesar información del libro...
End Sub

Esta segunda versión tiene una mejora, el nombre del archivo se toma de una celda perteneciente a una hoja del mismo libro, en este caso una hoja llamada "Setup", la cual podría estar oculta al usuario dependiendo las necesidades.

Sub AbrirArchivo3()
Dim libro As Workbook
Dim ruta As String
ruta = Application.GetOpenFilename()
Set libro = Workbooks.Open(ruta)
' Código para extraer o procesar información del libro...
End Sub

Una tercera y mejor alternativa sería utilizar el método "GetOpenFile" del objeto "Application" el cual abrirá el cuadro de dialogo para la selección de un archivo y una vez seleccionado se guardara la ruta de su ubicación en la variable "ruta", misma que se utilizará para abrir el archivo. Este último método dará una apariencia mas profesional a nuestra macro ya que le da al usuario la opción de elegir el archivo a procesar.


En próximos post mostrare otras opciones que tiene el método GetOpenFileName.




Comentarios