Results 1 to 2 of 2

Thread: Browse button

  1. #1
    Join Date
    Oct 2002

    Unanswered: Browse button

    Does anybody know how to create a Browse button ?

    The intention is that the user of the program can select a file (after having clicked on the browse button) and that this file name comes into a listbox.

    If anyone knows how this is done, I would appreciate your help.

  2. #2
    Join Date
    Aug 2002
    Northampton, England
    Copy and paste this code into a module.

    '.Browse Files Module
    '.Copyright 1999 Tribble Software. All rights reserved.
    '.Phone : (616) 455-2055
    '.E-mail :
    '.================================================ =========================
    ' DO NOT DELETE THE COMMENTS ABOVE. All other comments in this module
    ' may be deleted from production code, but lines above must remain.
    '.Description : This module calls directly into comdlg32.dll to allow user
    '. to select a filename using the Windows Common Dialog. The
    '. user may browse for a file, or enter a file name directly.
    '.Written By : Carl Tribble
    '.Date Created : 04/05/1999 09:56:31 AM
    '.Rev. History :
    ' Comments : Normally, to use the Common Dialog you need to physically
    ' place the ActiveX control onto a form and then use code
    ' behind the form to implement its functionality. This
    ' module allows you to incorporate the functionality of the
    ' File Open/Save part of the Common Dialog without the
    ' ActiveX control itself. This module is completely self-
    ' contained. Simply copy it into your database to use it.
    ' This module only provides the Open/Save file dialog, not the other
    ' CommonDialog interfaces (ColorChooser, Help, PrintDialog, etc.)
    ' If you want your user to browse for folder names (paths) you must use
    ' the module basBrowseFolders instead.
    ' TO STREAMLINE this module for production programs, you should remove:
    ' 1) Unnecessary comments
    ' 2) Flag Constants which you do not intend to use.
    ' 3) The test procedure tsGetFileFromUserTest
    ' ( For a working example, open the Debug window )
    ' ( and enter tsGetFileFromUserTest. )
    '.All the arguments for the function are optional. You may call it with no
    '.arguments whatsoever and simply assign its return value to a variable of
    '.the Variant type. For example:
    '. varFileName = tsGetFileFromUser()
    '.The function will return:
    '. the full path and filename selected or entered by the user, or
    '. Null if an error occurs or if the user presses Cancel.
    '.Optional arguments may include any of the following:
    '. rlngFlags : one or more of the tscFN* constants (declared below)
    '. Combine multiple constants like this:
    '. tscFNHideReadOnly Or tscFNFileMustExist
    '. strInitialDir : the directory to display when dialog opens
    '. strFilter : a string containing any filters you want to use. Each
    '. part must be separated by the vbNullChar. -example below
    '. lngFilterIndex: a 1-based index indicating which filter to start with.
    '. strDefaultExt : Extension to use if user does not enter one.
    '. strFileName : Default File to display in the File Name text box.
    '. strDialogTitle: Caption to display in the dialog's title bar.
    '. fOpenFile : Boolean-True for the Open dialog, False for Save dialog.
    ' FILTER EXAMPLE: The filter must be a string containing two parts for each
    ' filter. The first part is the Description, it is what the user will see
    ' in the Files of Type box, e.g. "Text Files (*.txt)". The second part is
    ' the actual filter, e.g. "*.txt". Each part and each filter must be
    ' separated by the vbNullChar. For example, to provide two filters, one for
    ' *.mdb files, and one for all files, use a statement like this:
    ' strFilter = "Access (*.mdb)" & vbNullChar & "*.mdb" _
    ' & vbNullChar & "All Files (*.*)" & vbNullChar & "*.*"
    ' Then pass your strFilter variable as the strFilter argument for the call
    ' to tsGetFileFromUser()
    '.Option Compare Database
    Option Explicit
    Private Declare Function ts_apiGetOpenFileName Lib "comdlg32.dll" _
    Alias "GetOpenFileNameA" (tsFN As tsFileName) As Boolean
    Private Declare Function ts_apiGetSaveFileName Lib "comdlg32.dll" _
    Alias "GetSaveFileNameA" (tsFN As tsFileName) As Boolean

    Private Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long

    Private Type tsFileName
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    strFilter As String
    strCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    strFile As String
    nMaxFile As Long
    strFileTitle As String
    nMaxFileTitle As Long
    strInitialDir As String
    strTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    strDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
    End Type

    ' Flag Constants
    Public Const tscFNAllowMultiSelect = &H200
    Public Const tscFNCreatePrompt = &H2000
    Public Const tscFNExplorer = &H80000
    Public Const tscFNExtensionDifferent = &H400
    Public Const tscFNFileMustExist = &H1000
    Public Const tscFNPathMustExist = &H800
    Public Const tscFNNoValidate = &H100
    Public Const tscFNHelpButton = &H10
    Public Const tscFNHideReadOnly = &H4
    Public Const tscFNLongNames = &H200000
    Public Const tscFNNoLongNames = &H40000
    Public Const tscFNNoChangeDir = &H8
    Public Const tscFNReadOnly = &H1
    Public Const tscFNOverwritePrompt = &H2
    Public Const tscFNShareAware = &H4000
    Public Const tscFNNoReadOnlyReturn = &H8000
    Public Const tscFNNoDereferenceLinks = &H100000

    Public Function tsGetFileFromUser( _
    Optional ByRef rlngflags As Long = 0&, _
    Optional ByVal strInitialDir As String = "", _
    Optional ByVal strFilter As String = "All Files (*.*)" & vbNullChar & "*.*", _
    Optional ByVal lngFilterIndex As Long = 1, _
    Optional ByVal strDefaultExt As String = "", _
    Optional ByVal strFileName As String = "", _
    Optional ByVal strDialogTitle As String = "", _
    Optional ByVal fOpenFile As Boolean = True) As Variant

    On Error GoTo tsGetFileFromUser_Err
    Dim tsFN As tsFileName
    Dim strFileTitle As String
    Dim fResult As Boolean

    ' Allocate string space for the returned strings.
    strFileName = Left(strFileName & String(256, 0), 256)
    strFileTitle = String(256, 0)

    ' Set up the data structure before you call the function
    With tsFN
    .lStructSize = Len(tsFN)
    .hwndOwner = Application.hWndAccessApp
    .strFilter = strFilter
    .nFilterIndex = lngFilterIndex
    .strFile = strFileName
    .nMaxFile = Len(strFileName)
    .strFileTitle = strFileTitle
    .nMaxFileTitle = Len(strFileTitle)
    .strTitle = strDialogTitle
    .flags = rlngflags
    .strDefExt = strDefaultExt
    .strInitialDir = strInitialDir
    .hInstance = 0
    .strCustomFilter = String(255, 0)
    .nMaxCustFilter = 255
    .lpfnHook = 0
    End With

    ' Call the function in the windows API
    If fOpenFile Then
    fResult = ts_apiGetOpenFileName(tsFN)
    fResult = ts_apiGetSaveFileName(tsFN)
    End If

    ' If the function call was successful, return the FileName chosen
    ' by the user. Otherwise return null. Note, the CancelError property
    ' used by the ActiveX Common Dialog control is not needed. If the
    ' user presses Cancel, this function will return Null.
    If fResult Then
    rlngflags = tsFN.flags
    tsGetFileFromUser = tsTrimNull(tsFN.strFile)
    tsGetFileFromUser = Null
    End If

    On Error GoTo 0
    Exit Function

    MsgBox Err.Description, , "Error: " & Err.Number _
    & " in function basBrowseFiles.tsGetFileFromUser"
    Resume tsGetFileFromUser_End

    End Function

    ' Trim Nulls from a string returned by an API call.

    Private Function tsTrimNull(ByVal strItem As String) As String

    On Error GoTo tsTrimNull_Err
    Dim I As Integer

    I = InStr(strItem, vbNullChar)
    If I > 0 Then
    tsTrimNull = Left(strItem, I - 1)
    tsTrimNull = strItem
    End If

    On Error GoTo 0
    Exit Function

    MsgBox Err.Description, , "Error: " & Err.Number _
    & " in function basBrowseFiles.tsTrimNull"
    Resume tsTrimNull_End

    End Function

    Copy and paste this code into the On Click event procedure of a command button. When clicked this code will place the chosen file and path into a text box.

    On Error GoTo Command35_Err
    Dim strFilter As String
    Dim lngflags As Long
    Dim varFileName As Variant

    strFilter = "All Files (*.*)" & vbNullChar & "*.*" _
    & vbNullChar & "All Files (*.*)" & vbNullChar & "*.*"

    lngflags = tscFNPathMustExist Or tscFNFileMustExist _
    Or tscFNHideReadOnly

    varFileName = tsGetFileFromUser( _
    fOpenFile:=True, _
    strFilter:=strFilter, _
    rlngflags:=lngflags, _
    strDialogTitle:="Please choose a file...")

    If IsNull(varFileName) Then
    Me![Text36] = varFileName
    End If

    On Error GoTo 0
    Exit Sub

    MsgBox Err.Description, , "Error: " & Err.Number _
    & " in file"
    Resume Command35_End

    End Sub

    Hope this helps.

    Not my code by the way.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts