Buscar archivo para importar en formulario VB Excel

Tengo un formulario en Vb de excel necesito buscar la opción que mediante un botón me importe un archivo xls o un txt a una hoja especifica pero que me permita buscar la ruta en donde se encuentra dicho archivo.

1 respuesta

Respuesta
1

Prueba asociando al botón un sub parecido a:

Sub prueba()
    Dim vFichero As Variant
    vFichero = Application.GetOpenFilename(filefilter:="Ficheros de Texto (*.txt), *.txt,Libros de Excel (*.xls*), *.xls*", Title:="Seleccionar fichero")
    If vFichero = False Then
        MsgBox "No se seleccionó ningún fichero."
        Exit Sub
    Else
        '
        'Lo que haya que hacer con el fichero seleccionado
        '
    End If
End Sub

Si interesase que la carpeta inicial fuese una determinada, bastaría con usar la instrucción ChDir antes de utilizar GetOpenFilename. Por ejemplo, para que la carpeta inicial fuese C:\Pruebas:

ChDir "C:\Pruebas"

Muchas gracias por tu aporte pero disculpa la verdad aun soy muy novato, ¿cuál debe ser la instrucción para que el archivo que selecciono lo importe a una hoja de excel?.

¿Importarlo? Si es un libro de Excel lo mejor es abrirlo directamente. Y si es un fichero de texto se podría importar desde Datos->'Desde Texto', pero luego hay que completar el Asistente para importar texto, así que si los ficheros de texto tienen siempre la misma estructura lo mejor es grabar una macro la primera vez que se importa y luego utilizar directamente la macro para importar el texto.

La idea es que al abrir el archivo seleccione el contenido de la hoja1 y lo inserte la hoja1 del libro que ejecuta el formulario.

¿Pero se trata de sustituir la hoja1 del libro donde está el formulario con la hoja1 del libro seleccionado?

Si fuese eso, el código podría ser:

Sub prueba()
    Dim vFichero As Variant, wkbLibro As Workbook
    vFichero = Application.GetOpenFilename(filefilter:="Ficheros de Texto (*.txt), *.txt,Libros de Excel (*.xls*), *.xls*", Title:="Seleccionar fichero")
    If vFichero = False Then
        MsgBox "No se seleccionó ningún fichero."
        Exit Sub
    Else
        Set wkbLibro = Workbooks.Open(vFichero)
        Application.DisplayAlerts = False
        ThisWorkbook.Worksheets("Hoja1").Delete
        Application.DisplayAlerts = True
        wkbLibro.Sheets("Hoja1").Copy Before:=ThisWorkbook.Sheets(1)
        wkbLibro.Close savechanges:=False
    End If
End Sub

pero cuidado con este código, porque borrará la hoja1 del libro donde se ejecute. Si vas a probarlo, hazlo en una copia del libro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas