gpt4 book ai didi

excel - 访问共享网络文件夹

转载 作者:行者123 更新时间:2023-12-02 05:55:20 25 4
gpt4 key购买 nike

我需要通过 VBA 访问网络文件服务器上托管的文件夹。该文件夹只能通过我有用户名和密码的服务帐户(不同于普通用户帐户)以书面形式访问。

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

有没有办法在正常用户 session 期间访问网络文件夹,但在 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"

它工作得很好。

现在想知道我想做的事情是否真的可行?如果没有,有什么替代方案吗?

谢谢

最佳答案

您可能会发现 this answer在您的测试中具有值(value)。

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

  1. 确保您尚未使用当前登录的用户连接到此资源。如果是,您可能会收到如下错误消息: enter image description here

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

否则我认为你是对的。我根据上面的链接组合了一些示例代码,并能够成功连接到不同用户名下的网络共享并迭代文件列表。

(请注意,您实际上不必映射驱动器来建立连接。)

以下代码是 Access network share from within VBScript eg FileSystemObject 中列出的示例的非常快速(有效)的 VBA 实现

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

关于excel - 访问共享网络文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com