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

Last reviewed: August 28, 1997
Article ID: Q151027
The information in this article applies to:
  • Microsoft Access versions 7.0, 97

SUMMARY

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

This article demonstrates 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 PgmApi
Version : 7.0 97
Platform : WINDOWS
Hardware : x86
Issue type : kbhowto


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: August 28, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.