Excel工作簿,我维持中有这样VBA代码:为什么驱动器号在Excel 2010中使此VBA代码失败?
Function GetDrivePath(DriveLetter As String) As String
Dim DrivePath As String
Dim DriveLen As Long
'DrivePath = Space(260)
DriveLen = Len(DrivePath)
If WNetGetConnection(DriveLetter, DrivePath, DriveLen) = error_success Then
GetDrivePath = DrivePath
Else
GetDrivePath = DriveLetter
End If
End Function
直到最近这段代码工作正常,但现在失败。即使在Excel工作表的存档版本中,它也不再有效。
如果这个格式的路径在Excel工作簿中使用,这不叫:
\\servername\filepath
但它被调用时路径具有驱动器号:
X:\filepath
现在它失败时,它叫做。它从未有过这个问题。
代码应该返回驱动器号引用的服务器路径。
它返回的错误并不特别有用;这是一个简单的类型不匹配错误。
典型输入:
X:
其中 “X” 是一个驱动器字母。
典型输出:
\\servername\path-to-folder-that-X-is-mapped-to
声明语句:
Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
WNetGetConnection是做什么的?你能告诉我们那个代码吗? – aphoria
@aphoria它是一个微软功能。 – called2voyage
这里是关于它的[Microsoft的信息](http://msdn.microsoft.com/en-us/library/windows/desktop/aa385453(v = vs.85).aspx)。 – called2voyage