返回不同用户的VBA网络驱动器号
我已经为自己和同事创建了一个门户,用于下载引用不同网络驱动器的工作簿模板,以便进行整合 门户托管在“Accounting”(Z:/)驱动器中,但其中一个工作簿引用了另一个驱动器“BI”(Y:/)中的电子表格 这在我的机器上运行得非常好,但我的同事有不同的驱动器号(例如M:/Accounting、U:/BI) 有没有办法在网络中搜索名称并返回驱动器号 下面是我的代码的大致近似值:返回不同用户的VBA网络驱动器号,vba,excel,network-programming,Vba,Excel,Network Programming,我已经为自己和同事创建了一个门户,用于下载引用不同网络驱动器的工作簿模板,以便进行整合 门户托管在“Accounting”(Z:/)驱动器中,但其中一个工作簿引用了另一个驱动器“BI”(Y:/)中的电子表格 这在我的机器上运行得非常好,但我的同事有不同的驱动器号(例如M:/Accounting、U:/BI) 有没有办法在网络中搜索名称并返回驱动器号 下面是我的代码的大致近似值: Option Explicit Sub mySub() dim WBaPath as String dim WB
Option Explicit
Sub mySub()
dim WBaPath as String
dim WBbPath as String
WBaPath = "Y:\BI-Accounting\myWorkbook.xlsm"
WBbPath = "Z:\Portal\myOtherWorkbook.xlsm"
dim WBa as Workbook
dim WBb as Workbook
set WBa = Workbooks.open(WBaPath)
set WBb = ThisWorkbook
'Code to do stuff
End Sub
文件夹和文件将具有相同的名称,但如何确保我所在部门的所有用户都可以使用这些工具而不必重新编程,最好不必在运行时进行选择?您可以使用:
Function FindDriveLetter(shareToFind As String) As String
Dim fs As Object
Dim dc As Object
Dim d As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set dc = fs.Drives
For Each d In dc
If d.drivetype = 3 Then
If UCase(d.sharename) = UCase(shareToFind) Then
FindDriveLetter = d.driveletter
Exit Function
End If
End If
Next
FindDriveLetter = ""
End Function
Sub Test()
MsgBox FindDriveLetter("\\SERVER01\SHAREXYZ\FILES")
' use whatever share name you have mapped to your "Y" or "Z" drive
' instead of "\\SERVER01\SHAREXYZ\FILES"
End Sub
但是使用UNC路径(例如
WBaPath=“\\SERVER01\SHAREXYZ\FILES\BI Accounting\myWorkbook.xlsm”
)通常更容易。使用而不是驱动器号。