Solved

Use a command button to browse to a directory and then have that directory path populate a text box.

Posted on 2015-01-15
4
160 Views
Last Modified: 2015-01-15
I have a command button on a form.  When the user clicks the button I want an explorer window to appear allowing the user to browse to a directory.  Then when they have gotten to the directory they want, have the path to that directory, not to a specific file in the directory, appear in a text box on the form.  I have the following code in place but it is not doing what I want it to do.

Private Sub cmdClickToLocate_Click()

   Dim fDialog As Office.FileDialog
   Dim varFile As Variant

   Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
   With fDialog

      .AllowMultiSelect = False
      .Title = "Select the location of this client's pdf files."
      .Filters.Clear
      .Filters.Add "", "*.*"

      If .Show = True Then
         ' Loop through each file that is selected and then add it to the list box.
         For Each varFile In .SelectedItems
            Me.txtPDFfilePath = varFile
         Next
      Else
         MsgBox "You clicked Cancel in the file dialog box."
      End If
   End With

End Sub

Open in new window

0
Comment
Question by:SteveL13
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 12

Assisted Solution

by:James Elliott
James Elliott earned 250 total points
ID: 40551203
Try swapping msoFileDialogFilePicker for msoFileDialogFolderPicker
0
 
LVL 52

Accepted Solution

by:
Rgonzo1971 earned 250 total points
ID: 40551205
HI,

you should use
 msofiledialogfolderpicker

Private Sub cmdClickToLocate_Click()

   Dim fDialog As Office.FileDialog
   Dim varFile As Variant

   Set fDialog = Application.FileDialog(msofiledialogfolderpicker)
   With fDialog

      .Title = "Select the location of this client's pdf files."
      If .Show = True Then
            Me.txtPDFfilePath =  .SelectedItem
         Next
      Else
         MsgBox "You clicked Cancel in the file dialog box."
      End If
   End With
End Sub

Open in new window

Regards
0
 
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 40551252
I have the following code in place but it is not doing what I want it to do.
Can you clearly state what it is, ...or is, not doing?

I use a different, somewhat longer way to do this...

For my purposes, If I need to select a "folder" only, (and not a file,) , ...Then I use a dialog box that just allows me to select a Folder specifically.
The code is from here:
http://www.ammara.com/access_image_faq/code/browse_for_folder_code.txt

This goes in a public module:
'************** Code Start **************
'This code was originally written by Terry Kreft.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.
'
'Code courtesy of
'Terry Kreft

Private Type BROWSEINFO
  hOwner As Long
  pidlRoot As Long
  pszDisplayName As String
  lpszTitle As String
  ulFlags As Long
  lpfn As Long
  lParam As Long
  iImage As Long
End Type

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
            "SHGetPathFromIDListA" (ByVal pidl As Long, _
            ByVal pszPath As String) As Long
            
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
            "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
            As Long
            
Private Const BIF_RETURNONLYFSDIRS = &H1
Public Function BrowseFolder(szDialogTitle As String) As String
  Dim X As Long, bi As BROWSEINFO, dwIList As Long
  Dim szPath As String, wPos As Integer
  
    With bi
        .hOwner = hWndAccessApp
        .lpszTitle = szDialogTitle
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
    
    dwIList = SHBrowseForFolder(bi)
    szPath = Space$(512)
    X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
    
    If X Then
        wPos = InStr(szPath, Chr(0))
        BrowseFolder = Left$(szPath, wPos - 1)
    Else
        BrowseFolder = vbNullString
    End If
End Function
'*********** Code End *****************

Open in new window


Then put code like this on your form (button)
Dim strFolderName As String

    strFolderName = BrowseFolder("Choose Folder For Import")

    If Len(strFolderName) > 0 Then
        ' Do something with the selected folder
        Me.txtPDFfilePath = strFolderName
    Else
        'No folder chosen, or user canceled
        MsgBox "You clicked Cancel in the file dialog box."
    End If

Open in new window


Hope this helps some...

JeffCoachman
0
 

Author Comment

by:SteveL13
ID: 40551264
I had to alter the proposed code a little to make it work...
Private Sub cmdClickToLocate_Click()

   Dim fDialog As Office.FileDialog
   Dim varFile As Variant

   Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
   With fDialog

      .Title = "Select the location of this client's pdf files."
      If .Show = True Then
        For Each varFile In .SelectedItems
            Me.txtPDFfilePath = varFile
         Next
      Else
         MsgBox "You clicked Cancel in the file dialog box."
      End If
   End With

End Sub

Open in new window

0

Featured Post

Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
AutoNumbers should increment automatically, without duplicates.  But sometimes something goes wrong, and the next AutoNumber value is a duplicate.  This article shows how to recover from this problem.
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

635 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question