How do I get a single file name out of a File Dialog object in VBA (for MS Access 2007)?

前端 未结 3 2002
暖寄归人
暖寄归人 2021-01-02 21:22

How do I change my code to get the file name instead of the directory name? openDialog.InitialFilename gives me the directory name.
openDialog.FileNam

相关标签:
3条回答
  • 2021-01-02 22:03
    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 讨论(0)
  • 2021-01-02 22:19

    You want:

    OpenDialog.SelectedItems.Item(1)
    

    In place of:

    OpenDialog.InitialFileName
    

    As you have not allowed multiselect.


    So:

    ''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
    

    If AllowMultiSelect is used, you need to iterate through 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 讨论(0)
  • 2021-01-02 22:24

    I needed to select a single text file... this is what I did... it worked fine.

    ' 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
    '----------------------------------------------------------
    

    Additionally... you can replace the dialog type with...

    Set dialog = Application.FileDialog(msoFileDialogOpen)
    

    and it worked equally well.

    0 讨论(0)
提交回复
热议问题