繁体   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