要打开带有用户名和密码的网络共享文件,在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.)函数从代码中读取它们。
|