Solved

Open File Dialog

Posted on 2008-10-27
1
247 Views
Last Modified: 2013-11-27
I use the following code (per Ken Getz et al) for the user to open files contained in a Participant's folder.
When the user opens one file it closes the dialog box. When the user selects muliple files the dialog box remains open. I want it to do the latter (i.e., not close the dialog box when only one file is selected.) Does any one know how to control this?
Public Function fGetDocFiles(strDirectory As String) As Boolean

 

On Error GoTo Err_DocFiles

 

   Dim strDocDirectory As String

   Dim lngFlags As Long

   Dim gfni As adh_accOfficeGetFileNameInfo

   Dim strReturnFile As String

   

   strDocDirectory = strDirectory

   fGetDocFiles = True

  

    On Error Resume Next

    

    If Dir(strDocDirectory) = "" Or IsNull(Dir(strDocDirectory)) Then

        MkDir (strDocDirectory)

    End If

        

    On Error GoTo 0

      

    lngFlags = lngFlags Or adhcGfniConfirmReplace

    lngFlags = lngFlags Or adhcGfniNoChangeDir

    lngFlags = lngFlags Or adhcGfniAllowReadOnly

    lngFlags = lngFlags Or adhcGfniAllowMultiSelect

   ' lngFlags = lngFlags Or adhcGfniDirectoryOnly

    lngFlags = lngFlags Or adhcGfniInitializeView

   

    With gfni

        .lngView = 0

        .lngFlags = lngFlags

        ' Make sure not to pass in Null values. adhOfficeGetFile

        ' doesn't like that, and often GPFs.

        .strFilter = "All Files (*.*)"

        .lngFilterIndex = 1

        .strfile = ""

        .strDlgTitle = "Find Correspondence for " & fGetCaption() & ""

        .strOpenTitle = "Search Docs " & ""

        .strInitialDir = strDocDirectory & ""

    End With

 

    If adhOfficeGetFileName(gfni, True) = adhcAccErrSuccess Then

        strReturnFile = Trim(gfni.strfile)

        Call ShellEx(strReturnFile)

    End If

       

    

 

Exit_DocFiles:

    Exit Function

 

Err_DocFiles:

    msgbox Err.Description

    Resume Exit_DocFiles

    

 

End Function

Open in new window

0
Comment
Question by:bin2003
1 Comment
 
LVL 74

Accepted Solution

by:
Jeffrey Coachman earned 500 total points
ID: 22819655
bin2003,

This is the code I use, I found it a while ago on the web.

It leaves the dialog box open when you select one file, as you specified.

'Needed for FileToOpen (Dialog Box) Codes
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As gFILE) As Long
Type gFILE
 lStructSize As Long
 hwndOwner As Long
 hInstance As Long
 lpstrFilter As String
 lpstrCustomFilter As String
 nMaxCustFilter As Long
 nFilterIndex As Long
 lpstrFile As String
 nMaxFile As Long
 lpstrFileTitle As String
 nMaxFileTitle As Long
 lpstrInitialDir As String
 lpstrTitle As String
 Flags As Long
 nFileOffset As Integer
 nFileExtension As Integer
 lpstrDefExt As String
 lCustData As Long
 lpfnHook As Long
 lpTemplateName As String
End Type

Function FileToOpen(Optional StartLookIn) As String
'*Needs code from Declaratiomns section, in order to work
 Dim OFN As gFILE
 Dim path As String
 Dim FileName As String
 Dim a As String
 
StartOver:
OFN.lStructSize = Len(OFN)
OFN.lpstrFilter = "My Excel Files (*.xls)" + Chr$(0) + "*.xls" + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
OFN.lpstrFile = Space$(254)
OFN.nMaxFile = 255
OFN.lpstrFileTitle = Space$(254)
OFN.nMaxFileTitle = 255

If Not IsMissing(StartLookIn) Then
 OFN.lpstrInitialDir = StartLookIn
'Else
' OFN.lpstrInitialDir = "C:\CorelDrw Files"
End If

OFN.lpstrTitle = "Please find and select the Excel File"
OFN.Flags = 0

a = GetOpenFileName(OFN)
If (a) Then
 path = Trim(OFN.lpstrFile)
 FileName = Trim(OFN.lpstrFileTitle)
 If Dir(path) <> "" Then FileToOpen = -1
 FileToOpen = Trim(OFN.lpstrFile)
Else
 FileToOpen = ""
 path = ""
 FileName = ""
End If

FileToOpen = path

End Function



(I call the function with code like this:
DoCmd.TransferSpreadsheet acImport, 8, strNewTableName, FileToOpen, True, "")

JeffCoachman
0

Featured Post

U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

Question has a verified solution.

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

QuickBooks® has a great invoice interface that we were happy with for a while but that changed in 2001 through no fault of Intuit®. Our industry's unit names are dictated by RUS: the Rural Utilities Services division of USDA. Contracts contain un…
Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.

895 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now