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