【VBA】ネットワークドライブを指定したドライブに割り当てる
VBAで「ネットワークドライブを指定したドライブに割り当てる」方法です
「Declare Function」で「Windows API」を定義します
「Windows API」は、WindowsのC言語関数をVBから呼び出すインターフェースです
Windows API 呼び出し定義
標準モジュールに下記のコードを記述します
「Windows API」の部分です
dllとリンクさせる記述です
マクロボタンクリックイベントと同じモジュールに記述する場合はPublicではなくPrivateで良いです
Option Explicit
'ネットワークリソースに接続する関数
Public Declare Function WNetAddConnection2 Lib "mpr.dll" _
Alias "WNetAddConnection2A" _
(lpNetResource As tagNETRESOURCE, _
ByVal lpPassword As String, _
ByVal lpUserName As String, _
ByVal dwFlags As Long) As Long
'リソースの詳細を示すデータ型
Public Type tagNETRESOURCE
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
Public Const NO_ERROR = 0
Public Const CONNECT_UPDATE_PROFILE = &H1
Public Const RESOURCETYPE_DISK = &H1
Public Const RESOURCE_GLOBALNET = &H2
Public Const RESOURCEDISPLAYTYPE_SHARE = &H3
Public Const RESOURCEUSAGE_CONNECTABLE = &H1
ネットワークドライブの割当て
標準モジュールに定義したものを使ってネットワークドライブを割り当てします
シートにマクロのコマンドボタンを追加し呼び出しします
下の例では、ネットワークドライブをローカルの「X」ドライブに割り当てします
Sub ボタン1_Click()
Dim udtNetResource As tagNETRESOURCE
Dim lngReturn As Long
Dim strPassword As String
Dim strUserName As String
'リソースの詳細を設定
With udtNetResource
.dwScope = RESOURCE_GLOBALNET
'リソースの種類
.dwType = RESOURCETYPE_DISK
'ローカルデバイスの名前
.lpLocalName = "X:"
'ネットワークリソースの共有名
.lpRemoteName = "\\test\aaa\bbb"
End With
'ネットワークリソースに接続
lngReturn = WNetAddConnection2(udtNetResource, _
strPassword, _
strUserName, _
CONNECT_UPDATE_PROFILE)
'接続に失敗した場合はメッセージボックスを表示
If lngReturn <> NO_ERROR Then
MsgBox "接続に失敗しました。"
End If
End Sub