教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでWindowsAPIを使い共有フォルダへ接続する方法

API宣言

WindowsAPI(関数)を使うためには、事前に宣言が必要となります。

Private Declare PtrSafe Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long

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

解説

この宣言では、WNetAddConnection2関数(共有フォルダへ接続)が使用できる様になります。

プログラミング例

具体的なプログラミング例を紹介します。

Sub ネットワークドライブを接続する()
    Dim ネットリソース As NETRESOURCE
    Dim 結果 As Long
    ' ネットワークリソースの設定
    With ネットリソース
        .dwScope = vbNull
        .dwType = vbNull
        .dwDisplayType = vbNull
        .dwUsage = vbNull
        ' ローカルドライブ名(今回はXドライブを指定)
        .lpLocalName = "X:"
        ' ネットワークパス(ここには接続するパスを指定)
        .lpRemoteName = "\\サーバー名\共有フォルダ"
        .lpComment = vbNullString
        .lpProvider = vbNullString
    End With
    ' WNetAddConnection2関数の呼び出し
    結果 = WNetAddConnection2(ネットリソース, vbNullString, vbNullString, 0)
    ' 結果をチェック
    If 結果 = 0 Then
        MsgBox "ネットワークドライブが正常に接続されました。"
    Else
        MsgBox "ネットワークドライブの接続に失敗しました。エラーコード: " & 結果
    End If
End Sub

上記のプログラムは、指定したネットワークドライブが「X:」として接続されます。

まとめ

WindowsAPI関数:WNetAddConnection2を使用し、共有フォルダへ接続する方法について紹介しました。