簡體   English   中英

訪問共享網絡文件夾

[英]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"

它完美地運作。

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

謝謝

您可能會在測試中找到這個有價值的答案

基本上,我會檢查一些事情......

  1. 確保您尚未使用當前登錄用戶連接到此資源。 如果是,您可能會收到如下錯誤消息: 在此輸入圖像描述

  2. 確保您在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM