2014-12-02 299 views
6

我需要通過VBA訪問網絡文件服務器上承載的文件夾。該文件夾只能通過服務帳戶(與普通用戶帳戶不同)以書面形式進行訪問,而我的用戶名和密碼也是可以的。訪問共享網絡文件夾

通過用戶界面,我可以看到該文件夾​​並將其映射爲本地驅動器,但爲了以書面形式訪問它,我需要從Windows註銷並通過服務帳戶登錄。

有沒有辦法在正常的用戶會話期間訪問網絡文件夾,但在VBA代碼中硬編碼username和pwd?

我也嘗試了文件夾映射爲本地驅動器:

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" 

它完美地工作。

想知道現在如果我想要做的事實際上是可能的?如果沒有,是否有其他選擇?

感謝

回答

5

您可能會發現在你的測試值this answer

從本質上講,我會檢查兩件事情......

  1. 確保你是不是已經連接到使用登錄的用戶目前這一資源。如果是,可能會收到類似以下的錯誤消息: enter image description here

  2. 請確保您的用戶名中使用domain\username語法。

否則我認爲你是正確的軌道。我基於上面的鏈接彙集了一些示例代碼,並且能夠使用不同的用戶名成功連接到網絡共享,並遍歷文件列表。

(請注意,您實際上並沒有映射驅動器建立連接的提示。)

下面的代碼是一個非常快的(工作)VBA實現樣品在Access network share from within VBScript eg 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 
+0

好東西,謝謝!由於我目前在家工作,我只能通過VPN試用您的代碼,並且無法正常工作(返回了「錯誤的用戶名或密碼」錯誤)。使用和不使用用戶名中的域名。我還能夠通過在資源管理器中打開目標文件夾來重現上述錯誤(多個連接)。我現在需要測試什麼時候回到辦公室,但這聽起來總體上對我很好,而且「必須」工作。如果你相信還有別的東西,我可以試着讓我知道,否則我們週一再說吧! – cfugge 2014-12-17 17:30:45

+0

這對我來說非常合適。非常感謝一個如此乾淨的編碼。 – cfugge 2014-12-22 13:37:25

+0

嘿,這段代碼真棒。第一次工作時幾乎沒有按摩。乾杯! – 2018-01-10 22:45:48