' Uncomment (Remove the ' ) the two lines of code below if they are not already at the top of your Module
'Option Compare Database
'Option Explicit
 
Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
 
'Used to set the Dialog Header and which type of files are visible
Public CDCaption, CDSearchString, CDInitDir As String
 
'Set from the button used to open the dialog box on the form
Public Type OPENFILENAME
    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

 
'---------------------------------------------------------------------------------------
' Procedure : LaunchCD
' Author    : Unknown
' Purpose   : Open's Windows File Dialog to search for a file or Directory
' Arguments :strForm - the name of your form  You can use: LaunchCD(Me)
'---------------------------------------------------------------------------------------
Function LaunchCD(strForm As Form) As String
    Dim OpenFile As OPENFILENAME
    Dim lReturn As Long
    Dim sFilter As String
 
    OpenFile.lStructSize = Len(OpenFile)
    OpenFile.hwndOwner = strForm.hwnd
    sFilter = CDSearchString
    OpenFile.lpstrFilter = sFilter
    OpenFile.nFilterIndex = 1
    OpenFile.lpstrFile = String(257, 0)
    OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
    OpenFile.lpstrFileTitle = OpenFile.lpstrFile
    OpenFile.nMaxFileTitle = OpenFile.nMaxFile
    OpenFile.lpstrInitialDir = CDInitDir        '"C:\My Documents"
    OpenFile.lpstrTitle = CDCaption        '"Select File..."
    OpenFile.flags = 0
    lReturn = GetOpenFileName(OpenFile)
    If lReturn = 0 Then
        LaunchCD = "None Selected"
    Else
        LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
    End If
 
End Function

 
 
 
'---------------------------------------------------------------------------------------
' Procedure : MakeFilterString
' Author    : Unknown
' Purpose   : Create filter string. Called by Function LaunchCD
' Arguments : Returns "" if there are no arguments.
'           : Expects an even number of arguments (filter name, extension).
'           : Adds *.* if the number of arguments is odd.
'---------------------------------------------------------------------------------------
'
Function MakeFilterString(ParamArray varFilt() As VariantAs String
 
  Dim strFilter As String
  Dim intRes As Integer
  Dim intNum As Integer
 
  intNum = UBound(varFilt)
  If (intNum <> -1) Then
    For intRes = 0 To intNum
      strFilter = strFilter & varFilt(intRes) & vbNullChar
    Next
    If intNum Mod 2 = 0 Then
      strFilter = strFilter & "*.*" & vbNullChar
    End If
 
    strFilter = strFilter & vbNullChar
  End If
 
  MakeFilterString = strFilter
End Function

 
 
 
'---------------------------------------------------------------------------------------
' Procedure : cmdGetFilepath_Click()
' Author    : Modified by Patrick Wood
' Purpose   : Open Windows File Dialog to add Filename and Path to a textbox
' Arguments : Returns strPath--the full path and file name:
'---------------------------------------------------------------------------------------
Private Sub cmdGetFilepath_Click()
 
   Dim strPath As String
 
    'Make a search string for the type of file you want to select from the examples below:
 
    'Examples:
       'Excel Files & All Files... CDSearchString = MakeFilterString("Excel Files (*.xls)", _
        "*.xls", "All Files (*.*)", "*.*")
 
       'Word Files...  CDSearchString = MakeFilterString("Word Documents (*.doc)", "*.doc", _
        "Text Files (*.txt)", "*.txt", "All Files (*.*)", "*.*")
 
       'Graphic Files...  CDSearchString = MakeFilterString("Graphic Files (*.bmp;*.gif;*.jpg;*.png,*.wmf)", _
        "*.bmp;*.gif;*.jpg;*.png,*.wmf", "All Files (*.*)", "*.*")
 
    ' We selected Graphic Files
    CDSearchString = MakeFilterString("Graphic Files (*.bmp;*.gif;*.jpg;*.png,*.wmf)", _
        "*.bmp;*.gif;*.jpg;*.png,*.wmf", "All Files (*.*)", "*.*")
 
    'Set the Caption on the Dialog Box
    CDCaption = "Select File to Attach..."
 
 
    ' txtFilePath is the textbox where the filename
    ' and path will be stored
    If IsNull([txtFilePath]) Or Me.txtFilePath = "" Then
        CDInitDir = "C:\MyDocuments\MyPictures"
    Else
        CDInitDir = [txtFilePath]
    End If
 
    strPath = LaunchCD(Me)
    If Not strPath = "None Selected" Then
      Me.txtImagepath = strPath
    End If
 
End Sub