段公子 发表于 2023-3-11 15:35:40

VBA连接有密码的共享盘

各位大神,VBA 怎样打开一个有用户名和密码的网络共享文件?怎么将用户名和密码写在代码中运行代码就能打开共享盘,在用ADO连接文件?

不二猫猫 发表于 2023-3-14 22:46:25

要打开带有用户名和密码的网络共享文件,在VBA中可以使用Windows API函数WNetAddConnection2。以下是一个示例代码,可以将共享文件夹映射到本地驱动器,并使用提供的用户名和密码进行身份验证。

' 定义网络共享文件路径
Const sharePath As String = "\\server\share"

' 定义要映射到的本地驱动器号
Const localDrive As String = "Z:"

' 定义用户名和密码
Const username As String = "your_username"
Const password As String = "your_password"

' 调用WNetAddConnection2函数映射网络驱动器
Dim res As Long
res = WNetAddConnection2( _
         RemoteName:=sharePath, _
         Password:=password, _
         UserName:=username, _
         LocalName:=localDrive, _
         dwFlags:=0 _
      )

' 检查是否映射成功
If res = 0 Or res = 1219 Then
    ' 映射成功或已经存在映射,使用ADO连接共享文件
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                              "Data Source=" & localDrive & "\path\to\file.accdb"
    conn.Open
    ' 进行其他操作,例如查询数据等
Else
    ' 映射失败,处理错误
    MsgBox "Failed to map network drive.", vbExclamation
End If
在上面的代码中,我们首先定义共享文件夹的路径和要映射到的本地驱动器号。然后,我们定义用户名和密码。接下来,我们调用WNetAddConnection2函数来映射网络驱动器,并指定用户名和密码进行身份验证。如果映射成功或已经存在映射,我们使用ADO连接共享文件。如果映射失败,我们会弹出一个消息框显示错误信息。

请注意,将用户名和密码写在代码中是不安全的,因为它们可以被轻松地窃取。更好的方法是将它们存储在一个安全的地方,并在代码中引用它们。例如,您可以将它们存储在Windows凭据管理器中,并使用(poe://www.poe.com/_api/key_phrase?phrase=CredRead&prompt=Tell%20me%20more%20about%20CredRead.)函数从代码中读取它们。

houxp 发表于 2023-6-17 17:37:09

二楼大老啊,受教了
页: [1]
查看完整版本: VBA连接有密码的共享盘