ACC: How to Return an UNC Path from an Existing Drive Letter

ID: Q151027

The information in this article applies to:

SUMMARY

Advanced: Requires expert coding, interoperability, and multiuser skills.

This article shows you how to return the Universal Naming Convention (UNC) path for a mapped drive letter.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

MORE INFORMATION

To find the UNC path associated with a mapped network drive letter, follow these steps:

1. Create a module and type the following lines in the Declarations

   section:

      Option Explicit

      ' These represent the possible returns errors from API.
      Public Const ERROR_BAD_DEVICE = 1200&
      Public Const ERROR_CONNECTION_UNAVAIL = 1201&
      Public Const ERROR_EXTENDED_ERROR = 1208&
      Public Const ERROR_MORE_DATA = 234
      Public Const ERROR_NOT_SUPPORTED = 50&
      Public Const ERROR_NO_NET_OR_BAD_PATH = 1203&
      Public Const ERROR_NO_NETWORK = 1222&
      Public Const ERROR_NOT_CONNECTED = 2250&
      Public Const NO_ERROR = 0

      ' This API declaration is used to return the
      ' UNC path from a drive letter.
      Declare Function WNetGetConnection Lib "mpr.dll" Alias _
                       "WNetGetConnectionA" _
                       (ByVal lpszLocalName As String, _
                       ByVal lpszRemoteName As String, _
                       cbRemoteName As Long) As Long

2. Type the following procedure:

      Function GetUNCPath(strDriveLetter As String) As String
         On Local Error GoTo GetUNCPath_Err
         Dim Msg As String, lngReturn As Long
         Dim lpszLocalName As String
         Dim lpszRemoteName As String
         Dim cbRemoteName As Long
         lpszLocalName = strDriveLetter
         lpszRemoteName = String$(255, Chr$(32))
         cbRemoteName = Len(lpszRemoteName)
         lngReturn = WNetGetConnection(lpszLocalName, _
                                       lpszRemoteName, _
                                       cbRemoteName)
         Select Case lngReturn
            Case ERROR_BAD_DEVICE
               Msg = "Error: Bad Device"
            Case ERROR_CONNECTION_UNAVAIL
               Msg = "Error: Connection Un-Available"
            Case ERROR_EXTENDED_ERROR
               Msg = "Error: Extended Error"
            Case ERROR_MORE_DATA
               Msg = "Error: More Data"
            Case ERROR_NOT_SUPPORTED
               Msg = "Error: Feature not Supported"
            Case ERROR_NO_NET_OR_BAD_PATH
               Msg = "Error: No Network Available or Bad Path"
            Case ERROR_NO_NETWORK
               Msg = "Error: No Network Available"
            Case ERROR_NOT_CONNECTED
               Msg = "Error: Not Connected"
            Case NO_ERROR
               ' all is successful...
         End Select
         If Len(Msg) Then
            MsgBox Msg, vbInformation
         Else
            ' Display the path in a Message box or return
            ' the UNC through the function.
            MsgBox Left$(lpszRemoteName, cbRemoteName)
            GetUNCPath = Left$(lpszRemoteName, cbRemoteName)
         End If
      GetUNCPath_End:
         Exit Function
      GetUNCPath_Err:
         MsgBox Err.Description, vbInformation
         Resume GetUNCPath_End
      End Function

3. To test this function, type the following line in the Debug
   window, and then press ENTER. A simple message box appears
   containing the UNC path of the specified network drive letter.

      ?GetUNCPath("h:")

   NOTE: This example assumes that you have a mapped network drive
   assigned to driver letter H.

   Some of the possible return values for the GetUNCPath function include
   ERROR_BAD_DEVICE, ERROR_CONNECTION_UNAVAIL, and ERROR_NOT_CONNECTED.

   Other run-time errors could be returned from the function and error
   trapping should be implemented.

REFERENCES

For more information about Declaring API Functions, search the Help Index for "Declare Statement," or ask the Microsoft Access 97 Office Assistant.

Additional query words: net connected network remote connection

Keywords          : kbprg
Version           : 7.0 97
Platform          : WINDOWS
Hardware          : x86
Issue type        : kbhowto

Last Reviewed: November 20, 1998