VBA 中调用 API 实现局域网连接的常用操作
如果常用到局域网内的其它机器上的文件,而且文件夹路径固定,又不想每次都打开该
路径,可用 VBA连接读取文件,这里完成“创建映射”、“断开映射”、“是否已创建映射”、
“取映射路径”、“生成一个本地未用的盘符符号”、“取得本地盘符数组”等 6 个函数,基本
上可满足平时文件操作的需要了
这里使用 API 来实现
‘以下代码可直接粘到 EXCEL 的 VBA 模块里面
' Const NO_ERROR = 0
' Const CONNECT_UPDATE_PROFILE = &H1
' Const RESOURCETYPE_DISK = &H1
' Const RESOURCETYPE_PRINT = &H2
' Const RESOURCETYPE_ANY = &H0
' Const RESOURCE_CONNECTED = &H1
' Const RESOURCE_REMEMBERED = &H3
' Const RESOURCE_GLOBALNET = &H2
' Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
' Const RESOURCEDISPLAYTYPE_GENERIC = &H0
' Const RESOURCEDISPLAYTYPE_SERVER = &H2
' Const RESOURCEDISPLAYTYPE_SHARE = &H3
' Const RESOURCEUSAGE_CONNECTABLE = &H1
' Const RESOURCEUSAGE_CONTAINER = &H2
Private Type NETRESOURCE
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As String
lpRemoteName As String
lpComment As String
lpProvider As String
End Type
Private Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A"
(lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String,
ByVal dwFlags As Long) As Long
Private Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias
"WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce
As Long) As Long
Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA"
(ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long)