[英]Access Shared Network Folder
我需要通過VBA訪問網絡文件服務器上托管的文件夾。 只能通過服務帳戶(與普通用戶帳戶不同)以書面形式訪問該文件夾,我有用戶名和密碼。
通過UI,我可以看到該文件夾並將其映射為本地驅動器,但為了以書面形式訪問它,我需要從Windows注銷並通過服務帳戶登錄。
有沒有辦法在普通用戶會話期間訪問網絡文件夾,但在VBA代碼中硬編碼用戶名和密碼?
我嘗試將文件夾映射為本地驅動器:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "S:", "\\corp-server\HostingFolder", False, Username, pwd
但沒有工作(“S”驅動器沒有映射)。 如果相反我做同樣但沒有提供用戶名和密碼:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "S:", "\\corp-server\HostingFolder"
它完美地運作。
現在想知道我想要做的事實際上是否可行? 如果沒有,還有其他選擇嗎?
謝謝
基本上,我會檢查一些事情......
確保您尚未使用當前登錄用戶連接到此資源。 如果是,您可能會收到如下錯誤消息:
確保您在domain\\username
中使用domain\\username
語法。
否則我認為你是正確的軌道。 我根據上面的鏈接匯總了一些示例代碼,並且能夠以不同的用戶名成功連接到網絡共享並遍歷文件列表。
(請注意您實際上不必映射驅動器以建立連接的提示。)
以下代碼是從VBScript中的Access網絡共享列出的示例的一個非常快速(工作)的VBA實現, 例如FileSystemObject
Public Sub TestNetShareName()
Dim NetworkObject As Object
Dim FSO As Object
Dim Directory As Object
Dim Filename As Object
Dim ServerShare As String
Dim UserName As String
Dim Password As String
ServerShare = "\\corp-server\HostingFolder"
UserName = "mydomain\myuser"
Password = "freddie123"
Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password
Set Directory = FSO.GetFolder(ServerShare)
For Each Filename In Directory.Files
Debug.Print Filename.Name
Next
Set Filename = Nothing
Set Directory = Nothing
Set FSO = Nothing
NetworkObject.RemoveNetworkDrive ServerShare, True, False
Set NetworkObject = Nothing
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.