是否存在一种方法,最好是在 VBA 中或从 VBA 中(直接或通过 Win32、PowerShell、VBS 或 CMD 调用)以编程方式返回/获取包含 (a) 工作目录;或 (b) 完全限定的文件名?
目标是为网络用户(出于当前目的,在同一本地子网上且没有 Active Directory)提供一个允许他们访问相关文件的字符串,例如,类似于
\ServerName\ShareName \路径\文件名.ext
获取文件的计算机名称和本地 URI 很容易,但共享名称元素却难以捉摸。 困难在于,可获得的本地 URI 仅引用本地文件系统,以驱动器盘符开头,例如,
.DriveLetter:\path o\FileName.ext,这对于网络用户。
请注意,共享可以是包含目录或任何更高级别的超级目录。
任何关于是否以及如何做到这一点的想法,包括有关方法的一般想法,我们将不胜感激。
请尝试下一个功能:
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
请在测试后发送一些反馈。