教えて!ExcelVBA!

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

【ExcelVBA API操作】共有フォルダを切断(WNetCancelConnection2)する方法を教えて!

WNetCancelConnection2関数は、Windows APIの1つで、ネットワークより切断するために使用されます。

API宣言

ExcelVBAでは、WNetCancelConnection2関数を使用する前にAPI宣言を行う必要があります。API宣言を行うことで、ExcelVBAがWindowsAPI関数を認識することができるようになります。API宣言は次のように行います。

Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long

解説

パラメータ 内容
Lib 使用する動的リンクライブラリ(DLL)の名前を指定します。ここでは "mpr.dll"となります。
Alias API関数名を指定します。ここでは"WNetCancelConnection2A"という関数名が指定されています。

引数については以下の通りです。

引数 内容
lpName 切断する共有フォルダのパスを指定します。
dwFlags 切断オプションを指定します。通常は0を指定します。
fForce 切断を強制するかどうかを指定します。True(-1)を指定すると強制的に切断されます。

使い方

WNetCancelConnection2関数を呼び出し、指定した共有フォルダの接続を解除します。

Dim result As Long
result = WNetCancelConnection2(folderPath, 0, True)

APIの戻り値として、共有フォルダの切断結果を示す数値が返されます。通常、成功した場合は0が返されます。失敗した場合はエラーコードが返されますので、切断の成功可否を判定する際に利用します。

プログラミング例

以下に、プログラミング例を紹介します。

Sub DisconnectSharedFolder()
    Dim folderPath As String
    folderPath = "\\server\sharedfolder\" ' 切断したい共有フォルダのパスを指定
    Dim result As Long
    result = WNetCancelConnection2(folderPath, 0, True) ' APIを呼び出して共有フォルダを切断
    If result = 0 Then
        MsgBox "共有フォルダの切断に成功しました。", vbInformation
    Else
        MsgBox "共有フォルダの切断に失敗しました。エラーコード: " & result, vbExclamation
    End If
End Sub

このプログラムでは、"\server\sharedfolder"という共有フォルダを強制的に切断しています。切断が成功した場合は、成功メッセージが表示されます。切断に失敗した場合は、エラーコードが表示されます。

まとめ

WNetCancelConnection2関数を呼び出すことで、共有フォルダを切断することができます。正確なパス指定やエラー処理に注意しながら、共有フォルダの切断を行ってください。