WNetAddConnection2関数は、WindowsAPIの1つで、ネットワークに接続するために使用されます。ネットワークリソースには、共有フォルダ、プリンタ、Webサイトなどが含まれます。
API宣言
ExcelVBAでは、WNetAddConnection2関数を使用する前にAPI宣言を行う必要があります。API宣言を行うことで、ExcelVBAがWindowsAPI関数を認識することができるようになります。API宣言は次のように行います。
解説
パラメータ | 内容 |
Lib | 使用する動的リンクライブラリ(DLL)の名前を指定します。ここでは "mpr.dll"となります。 |
Alias | API関数名を指定します。ここでは"WNetAddConnection2A"という関数名が指定されています。 |
引数については以下の通りです。
引数 | 内容 |
lpNetResource | 接続先のリソースを指定するための構造体です。この構造体には、接続するリソースの種類(共有フォルダ、プリンタ、Webサイトなど)、接続するリソースの名前、接続するリソースのローカル名などを指定します。構造体を以下で紹介します。 |
lpPassword | 接続先のリソースにアクセスするためのパスワードを指定します。通常はvbNullStringを指定して、パスワードなしで接続します。 |
lpUserName | 接続先のリソースにアクセスするためのユーザー名を指定します。通常はvbNullStringを指定して、ユーザ名なしで接続します。 |
dwFlags | 接続オプションを指定します。接続オプションには、読み取り専用接続、インターネット接続、再接続などがあります。通常は0を指定します。 |
構造体は以下の通りです。
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関数を使用して、ネットワークドライブへの接続を行うには、以下の手順を実行します。
1.接続先のリソースを指定するための構造体を作成します。
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
この構造体には、接続するリソースの種類、接続するリソースの名前、接続するリソースのローカル名などを指定します。例えば、以下のように構造体を作成して、共有フォルダに接続する場合は、dwTypeにRESOURCETYPE_DISK、lpRemoteNameに共有フォルダのパスを指定します。
NetRes.dwScope = vbNull
NetRes.dwType = vbNull
NetRes.dwDisplayType = vbNull
NetRes.dwUsage = vbNull
NetRes.lpLocalName = "Z:"
NetRes.lpRemoteName = "\\10.20.30.40\テスト"
NetRes.lpComment = vbNullString
NetRes.lpProvider = vbNullString
2. WNetAddConnection2関数を使用して、接続を行います。
Result = WNetAddConnection2(NetRes, vbNullString, vbNullString, 0)
このようにして、WNetAddConnection2関数を使用して、ネットワークドライブへの接続を行うことができます。接続が成功すると0以外の値を返し、接続に失敗すると0を返します。
プログラミング例
以下のプログラムは、VBAでWNetAddConnection2関数を使用して、ネットワークドライブへの接続を行う例です。この例では、共有フォルダに接続するための構造体を作成し、WNetAddConnection2関数を使用して接続を行います。
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" (ByVal lpNetResource As Any, ByVal lpPassword As Any, ByVal lpUserName As Any, ByVal dwFlags As Long) As Long
Sub ConnectToSharedFolder()
Dim NetRes As NETRESOURCE
NetRes.dwScope = vbNull
NetRes.dwType = vbNull
NetRes.dwDisplayType = vbNull
NetRes.dwUsage = vbNull
NetRes.lpLocalName = "Z:"
NetRes.lpRemoteName = "\\10.20.30.40\テスト"
NetRes.lpComment = vbNullString
NetRes.lpProvider = vbNullString
Dim Result As Long
Result = WNetAddConnection2(NetRes, vbNullString, vbNullString, 0)
If Result <> NO_ERROR Then
MsgBox "接続に失敗しました。"
Else
MsgBox "接続に成功しました。"
End If
End Sub
このプログラムを実行すると、共有フォルダに接続することができます。接続が成功すると、メッセージボックスに「接続に成功しました。」と表示されます。接続に失敗する場合は、メッセージボックスに「接続に失敗しました。」と表示されます。
まとめ
WNetAddConnection2関数は、ネットワーク接続に関する機能を提供するWindowsAPIの一つで、接続するリソースの種類、名前、ローカル名などを指定することができます。また、接続が成功した場合には0以外の値を返し、接続に失敗した場合には0を返します。これにより接続の成否を判定することができます。WNetAddConnection2関数を使用する際には、接続するリソースの種類や名前、接続に使用するユーザー名やパスワードなどを正確に指定する必要があります。また、接続に失敗した場合には、エラーメッセージを表示するなど、適切なエラーハンドリングを行うことが重要です。