为不同用户返回VBA网络驱动器号

时间:2017-07-31 20:59:02

标签: excel vba excel-vba network-programming

我为自己和同事创建了一个门户,可以下载引用不同网络驱动器的工作簿模板,以便进行整合。

门户网站托管在“会计”(Accounting)(Z:/)驱动器中,但其中一个工作簿引用了不同驱动器“BI”(Y:/)中的电子表格。

这在我的机器上运行得非常好,但是我的同事有不同的驱动器号(例如M:/ Accounting,U:/ BI)。

有没有办法在网络中搜索名称并返回驱动器号?

这是我的代码的粗略近似值:

float

文件夹和文件将具有相同的名称,但是确保我所在部门的所有用户都可以使用这些工具而不必重新编程的最佳方法是什么,最好不必在运行时选择?< / p>

1 个答案:

答案 0 :(得分:2)

您可以使用FileSystemObject's Drives property来实现此目的:

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")通常更容易。