none
openfilename en access RRS feed

  • Pregunta

  • Buenas noches.

    En excel existe el metodo  Application.GetOpenFilename para seleccionar archivos, pudiendo indicarl la extensión del archivo que se muestra en el arbol.

    Existe algo parecido en access?

    Es posible indicarle que muestre 2 extensiones a la vez (por ejemplo .fan y .ant)?

    Como sería el código?

    Gracias por su ayuda.

     

    viernes, 13 de agosto de 2010 20:05

Respuestas

  • Hola!

    En Access, lo mismo que en Excel o Word puedes utilizar el FileDialog de Office, en la ayuda tienes un ejemplo muy clarito, ten presente que tendrás que declarar una referencia a Micorosoft Office X.0 Object Library.


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Marcado como respuesta rafa_c domingo, 15 de agosto de 2010 18:00
    viernes, 13 de agosto de 2010 20:24
  • Tendrás que "encapsular" el filedialog en una función (Por ejemplo AbrirArchivo) que devuelva la ruta del archivo seleccionado y utilizar dicha función en la sentencia OPEN

    Open AbrirArchivo for input as #1


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Marcado como respuesta rafa_c sábado, 21 de agosto de 2010 16:53
    viernes, 20 de agosto de 2010 19:47
  • Yo utilizo este procedimiento

    Public Function AbrirArchivoFD(Optional strRutaInicio As String, Optional strTipoArchivos As String, Optional strTitulo As String, Optional strBoton As String) As String

    Dim fd As Object      'Office.FileDialog
    Const msoFileDialogFilePicker = 3

    On Error GoTo AbrirArchivoFD_TratamientoErrores

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    ' verifico la existencia de la ruta y en su defecto utilizo la carpeta actual
    If Nz(strRutaInicio, vbNullString) = vbNullString Or Len(Dir(strRutaInicio, vbDirectory)) = 0 Then
       strRutaInicio = CurrentProject.Path
    End If
    ' si la ruta no acaba en contrabarra la añado
    If Not Right(strRutaInicio, 1) = "\" Then strRutaInicio = strRutaInicio & "\"

    ' título del cuadro de díalogo
    If Nz(strTitulo, vbNullString) = vbNullString Then strTitulo = "Seleccione un archivo"
    ' título del botón
    If Nz(strBoton, vbNullString) = vbNullString Then strBoton = "Abrir"

    With fd
       .AllowMultiSelect = False
       .InitialFileName = strRutaInicio
       .Title = strTitulo
       .ButtonName = strBoton
       .Filters.Clear
       .Filters.Add "Todos los Archivos", "*.*", 1
       If Nz(strTipoArchivos, vbNullString) = vbNullString Then
          .FilterIndex = 1
       Else
          .Filters.Add "Bases de datos de Microsoft Office Access", "*.mdb; *.mde; *.accdb; *.accde", 2
          .FilterIndex = 2
       End If
       If .Show Then
          AbrirArchivoFD = .SelectedItems(1)
       End If
    End With


    AbrirArchivoFD_Salir:
       Set fd = Nothing
       On Error GoTo 0
       Exit Function
      
    AbrirArchivoFD_TratamientoErrores:
       MsgBox "Error " & Err & " en proc.: AbrirArchivoFD de Módulo: mdlAbriArchivo (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
       Resume AbrirArchivoFD_Salir
      
    End Function         ' AbrirArchivoFD

    AllowMultiSelect permite seleccionar varios archivos, pero en ese caso habrás de recorrer la colección .SelectedItems para extraer todos los archivos seleccionados, de la ayuda:

             For Each varFile In .SelectedItems
                Me.FileList.AddItem varFile
             Next


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Marcado como respuesta rafa_c miércoles, 25 de agosto de 2010 19:06
    lunes, 23 de agosto de 2010 21:02

Todas las respuestas

  • Hola!

    En Access, lo mismo que en Excel o Word puedes utilizar el FileDialog de Office, en la ayuda tienes un ejemplo muy clarito, ten presente que tendrás que declarar una referencia a Micorosoft Office X.0 Object Library.


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Marcado como respuesta rafa_c domingo, 15 de agosto de 2010 18:00
    viernes, 13 de agosto de 2010 20:24
  • Hola Rafa!!

    He realizado lo que me inidicaste y funciona perfectamente, pero tengo otra duda sobre este tema.

    Tengo un programilla para analizar ficheros. Al pulsar el botón me pregunta mediante inputbox el nombre del fichero a analizar.Una vez indicado, hago un open "c:\archivo.txt" for input as #1. Utilizando filedialog, pretendía poder buscar el archivo en el arbol de directorios/archivos. esto ya lo tengo, pero ¿como hago que con el archivo seleccionado haga la misma operación que con open.....as #1?

    Gracias

    viernes, 20 de agosto de 2010 17:43
  • Tendrás que "encapsular" el filedialog en una función (Por ejemplo AbrirArchivo) que devuelva la ruta del archivo seleccionado y utilizar dicha función en la sentencia OPEN

    Open AbrirArchivo for input as #1


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Marcado como respuesta rafa_c sábado, 21 de agosto de 2010 16:53
    viernes, 20 de agosto de 2010 19:47
  • Hola Emilio!!

    Algo estoy haciendo mal ya que al ejecutar la funcion e ir al procedimiento principal y ejecutar Open AbrirArchivo for input as #1 me dice que la ruta es incorrecta

    La funcion que he creado es 

    Public Function AbrirArchivo() As String
    Dim arbol As FileDialog
    Set arbol = Application.FileDialog(msoFileDialogOpen)   
      With arbol
        .AllowMultiSelect = True
        .Show
       End With 

    End Function

     

    Otra pregunta es si cuando funcione serviría para seleccionar y abrir varios archivos a la vez para ser tratados en el proceso de analisis principal

    Saludos y gracias por tu ayuda

     

     

    sábado, 21 de agosto de 2010 19:43
  • Yo utilizo este procedimiento

    Public Function AbrirArchivoFD(Optional strRutaInicio As String, Optional strTipoArchivos As String, Optional strTitulo As String, Optional strBoton As String) As String

    Dim fd As Object      'Office.FileDialog
    Const msoFileDialogFilePicker = 3

    On Error GoTo AbrirArchivoFD_TratamientoErrores

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    ' verifico la existencia de la ruta y en su defecto utilizo la carpeta actual
    If Nz(strRutaInicio, vbNullString) = vbNullString Or Len(Dir(strRutaInicio, vbDirectory)) = 0 Then
       strRutaInicio = CurrentProject.Path
    End If
    ' si la ruta no acaba en contrabarra la añado
    If Not Right(strRutaInicio, 1) = "\" Then strRutaInicio = strRutaInicio & "\"

    ' título del cuadro de díalogo
    If Nz(strTitulo, vbNullString) = vbNullString Then strTitulo = "Seleccione un archivo"
    ' título del botón
    If Nz(strBoton, vbNullString) = vbNullString Then strBoton = "Abrir"

    With fd
       .AllowMultiSelect = False
       .InitialFileName = strRutaInicio
       .Title = strTitulo
       .ButtonName = strBoton
       .Filters.Clear
       .Filters.Add "Todos los Archivos", "*.*", 1
       If Nz(strTipoArchivos, vbNullString) = vbNullString Then
          .FilterIndex = 1
       Else
          .Filters.Add "Bases de datos de Microsoft Office Access", "*.mdb; *.mde; *.accdb; *.accde", 2
          .FilterIndex = 2
       End If
       If .Show Then
          AbrirArchivoFD = .SelectedItems(1)
       End If
    End With


    AbrirArchivoFD_Salir:
       Set fd = Nothing
       On Error GoTo 0
       Exit Function
      
    AbrirArchivoFD_TratamientoErrores:
       MsgBox "Error " & Err & " en proc.: AbrirArchivoFD de Módulo: mdlAbriArchivo (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
       Resume AbrirArchivoFD_Salir
      
    End Function         ' AbrirArchivoFD

    AllowMultiSelect permite seleccionar varios archivos, pero en ese caso habrás de recorrer la colección .SelectedItems para extraer todos los archivos seleccionados, de la ayuda:

             For Each varFile In .SelectedItems
                Me.FileList.AddItem varFile
             Next


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Marcado como respuesta rafa_c miércoles, 25 de agosto de 2010 19:06
    lunes, 23 de agosto de 2010 21:02
  • Muchas gracias Emilio por tu ayuda.

    Saludos

     

    miércoles, 25 de agosto de 2010 19:07