|  | 
 
 发表于 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凭据管理器中,并使用[CredRead](poe://www.poe.com/_api/key_phrase?phrase=CredRead&prompt=Tell%20me%20more%20about%20CredRead.)函数从代码中读取它们。
 | 
 |