访问共享网络文件夹
问题描述:
我需要通过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"
它完美地工作。
想知道现在如果我想要做的事实际上是可能的?如果没有,是否有其他选择?
感谢
答
您可能会发现在你的测试值this answer。
从本质上讲,我会检查两件事情......
确保你是不是已经连接到使用登录的用户目前这一资源。如果是,可能会收到类似以下的错误消息:
请确保您的用户名中使用
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
好东西,谢谢!由于我目前在家工作,我只能通过VPN试用您的代码,并且无法正常工作(返回了“错误的用户名或密码”错误)。使用和不使用用户名中的域名。我还能够通过在资源管理器中打开目标文件夹来重现上述错误(多个连接)。我现在需要测试什么时候回到办公室,但这听起来总体上对我很好,而且“必须”工作。如果你相信还有别的东西,我可以试着让我知道,否则我们周一再说吧! – cfugge 2014-12-17 17:30:45
这对我来说非常合适。非常感谢一个如此干净的编码。 – cfugge 2014-12-22 13:37:25
嘿,这段代码真棒。第一次工作时几乎没有按摩。干杯! – 2018-01-10 22:45:48