访问共享networking文件夹

我需要通过VBA访问networking文件服务器上托pipe的文件夹。 该文件夹只能通过服务帐户(不同于普通用户帐户)以书面forms进行访问,对此我有用户名和密码。

通过UI,我可以看到该文件夹​​并将其映射为本地驱动器,但为了以书面forms访问它,我需要从Windows注销并通过服务帐户login。

有没有办法在正常的用户会话期间访问networking文件夹,但在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" 

它完美的作品。

想知道我现在想做的事实际上是可能的吗? 如果没有,有没有其他的select?

谢谢

您可能会在testing中发现这个有价值的答案 。

本质上,我会检查一些事情…

  1. 确保您尚未使用当前login的用户连接到此资源。 如果你是,你可能会得到如下错误信息: 在这里输入图像说明

  2. 确保您在domain\username中使用了domain\username语法。

否则,我认为你是正确的轨道。 我基于上面的链接汇集了一些示例代码,并能够成功连接到不同用户名下的networking共享,并遍历文件列表。

(请注意,您实际上并不需要映射驱动器来build立连接。)

下面的代码是在VBScript中访问networking共享列出的示例的一个非常快速(工作)的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