Option Explicit
      
      Private 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
      
      Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
      "GetOpenFileNameA" (pOpenfilename As OpenFileName) As Long

      Function GetOpenFname(fName As String) As Boolean
      Dim ofn As OpenFileName
      ofn.lStructSize = Len(ofn)
      ofn.lpstrFilter = "Comma Separated Values (*.csv)" + Chr$(0) + "*.csv" + Chr$(0) _
      + "Text Files (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) _
      + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
      ofn.lpstrFile = Space$(254)
      ofn.nMaxFile = 255
      ofn.lpstrFileTitle = Space$(254)
      ofn.nMaxFileTitle = 255
      ofn.lpstrInitialDir = CurDir
      ofn.lpstrTitle = "Coordinate Data in CSV Format"
      ofn.flags = 0
      Dim lngRetVal As Long
      lngRetVal = GetOpenFileName(ofn)
      
      If (lngRetVal) Then
      GetOpenFname = True
      fName = Trim$(ofn.lpstrFile)
      Else
      GetOpenFname = False
      
      End If
      End Function