Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回不同用户的VBA网络驱动器号_Vba_Excel_Network Programming - Fatal编程技术网

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

返回不同用户的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

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

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

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

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

下面是我的代码的大致近似值:

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

使用而不是驱动器号。