如何获取包含文件或工作目录的共享名

问题描述 投票:0回答:1

是否存在一种方法,最好是在 VBA 中或从 VBA 中(直接或通过 Win32、PowerShell、VBS 或 CMD 调用)以编程方式返回/获取包含 (a) 工作目录;或 (b) 完全限定的文件名?

目标是为网络用户(出于当前目的,在同一本地子网上且没有 Active Directory)提供一个允许他们访问相关文件的字符串,例如,类似于

\ServerName\ShareName \路径\文件名.ext

获取文件的计算机名称和本地 URI 很容易,但共享名称元素却难以捉摸。 困难在于,可获得的本地 URI 仅引用本地文件系统,以驱动器盘符开头,例如

.DriveLetter:\path o\FileName.ext
,这对于网络用户。

请注意,共享可以是包含目录或任何更高级别的超级目录。

任何关于是否以及如何做到这一点的想法,包括有关方法的一般想法,我们将不胜感激。

vba share file-permissions local-files windows-share
1个回答
0
投票

请尝试下一个功能:

Function SharedFileFullPath(wb As Workbook) As String
 If Len(wb.Path) > 2 _
     Then SharedFileFullPath = """" & wb.Name & """ is not on a mapped drive...": Exit Function
  With CreateObject("Scripting.FileSystemObject")
    If .GetDrive(wb.Path).DriveType = 3 Then
       SharedFileFullPath = .GetDrive(wb.Path).ShareName
    End If
  End With
End Function

您可以测试它从此类映射驱动器打开工作簿并激活它。然后运行下一个测试

Sub
:

Sub testSharedFileFullPath()
  Debug.Print SharedFileFullPath(ActiveWorkbook) 'the workbook from the mapped drive
  Debug.Print SharedFileFullPath(ThisWorkbook) 'the workbook keeping the code, from a LOCAL path
End Sub

请在测试后发送一些反馈。

© www.soinside.com 2019 - 2024. All rights reserved.