2010-01-28 13 views
5

¿Cómo cambio mi código para obtener el nombre del archivo en lugar del nombre del directorio? openDialog.InitialFilename me da el nombre del directorio.
openDialog.FileName me da el error "Método o miembro de datos no encontrado".¿Cómo obtengo un nombre de archivo único de un objeto de diálogo de archivo en VBA (para MS Access 2007)?

Private Sub btnEditPhoto_Click() 
    If (txtImageName > "") Then 

     Application.FollowHyperlink txtImageName 

    Else 
     Dim openDialog As Office.FileDialog 

     Set openDialog = Application.FileDialog(msoFileDialogFilePicker) 

      openDialog.Filters.Clear 
      openDialog.Filters.Add "JPEG Files", "*.jpg" 

     Dim pickedFile As Boolean 
      pickedFile = openDialog.Show 

     If pickedFile Then 
       txtImageName.SetFocus 
       txtImageName.Text = openDialog.InitialFileName 
     End If 

    End If 

End Sub 
+0

Es un poco confuso editar su pregunta para incorporar la respuesta, ya que en ese punto, su código hace lo que usted está pidiendo ayuda. –

Respuesta

11

que desee:

OpenDialog.SelectedItems.Item(1) 

En lugar de:

OpenDialog.InitialFileName 

Como usted no ha permitido selección múltiple.


Así:

''Reference Microsoft Office x.x Object Library 
Dim openDialog As Office.FileDialog 

Set openDialog = Application.FileDialog(msoFileDialogFilePicker) 
openDialog.Filters.Clear 
openDialog.Filters.Add "JPEG Files", "*.jpg" 

If openDialog.Show Then 
    ''SelectedItems is not zero based 

    ''Do not use .Text property in MS Access except 
    ''in special cases, then you will not have to set focus 
    ''txtImageName.SetFocus 

    txtImageName = openDialog.SelectedItems(1) 
End If 

Si se utiliza AllowMultiSelect, es necesario recorrer SelectedItems

''Reference Microsoft Office x.x Object Library 
Dim openDialog As Office.FileDialog 
Dim i As Integer 

Set openDialog = Application.FileDialog(msoFileDialogFilePicker) 
'Use ctl or shift + click to select more than one file 
openDialog.AllowMultiSelect = True 
openDialog.Filters.Clear 
openDialog.Filters.Add "JPEG Files", "*.jpg" 

If openDialog.Show Then 
    For i = 1 To openDialog.SelectedItems.Count 
     Imagelst = Imagelst & ";" & openDialog.SelectedItems(i) 
    Next 
End If 
+0

¡Muchas gracias! Ahora funciona. –

1

que necesitaba para seleccionar un archivo de texto ... esto es lo que hice ... funcionó bien.

' Get the File 
'---------------------------------------------------------- 
Dim dialog As Object 
Dim pickedfile As Boolean 
Dim myfile As String 
Set dialog = Application.FileDialog(msoFileDialogFilePicker) 
With dialog 
    .AllowMultiSelect = False 
    .Title = "Please pick the file to convert." 
    .Filters.Clear 
    .Filters.Add "Text Files", "*.TXT" 
    .Filters.Add "All Files", "*.*" 
    pickedfile = False 
    pickedfile = .Show 
    If pickedfile Then 
    myfile = .SelectedItems.Item(1) 
    End If 
End With 
'---------------------------------------------------------- 

Además ... se puede sustituir el tipo de diálogo con ...

Set dialog = Application.FileDialog(msoFileDialogOpen) 

y funcionó igual de bien.

0
Private Sub Command135_Click() 

Dim dialog As Object 
Dim pickedfile As Boolean 
Dim myfile As String 
Set dialog = Application.FileDialog(1) 
With dialog 
    .AllowMultiSelect = False 
    .Title = "Please pick the file to convert." 
    .Filters.Clear 
    .Filters.Add "Picture Files", "*.Jpg" 
    .Filters.Add "All Files", "*.*" 
    pickedfile = False 
    pickedfile = .Show 
    If pickedfile Then 
    myfile = .SelectedItems.Item(1) 
    End If 
End With 

Me.Form.Picture = myfile 
End Sub 


Command_135=Button Name 
Me.Form.Picture = "The Control Name" 
+0

Dé una breve descripción del código que ha publicado para que sea útil para otros. – Rakesh

Cuestiones relacionadas