VBA技術解説
WshNetwork(ネットワークドライブの割り当て等)

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2025-04-09 最終更新日:2025-04-09

WshNetwork(ネットワークドライブの割り当て等)


WshNetworkは、「Windows Script Host Runtime Library」に含まれているオブジェクトで、ネットワーク リソースへのアクセスが提供されています。
ここでは、WshNetworkの主なプロパティとメソッドの簡単な使い方をサンプルVBAとともに解説します。


Windowsシステムを管理するためのインターフェイスであるWMIも参考になると思います。
VBAでWMIの使い方について
・WMIを調べるときの推奨サイト ・VBAでのWMI使用方法 ・WMIにはどんなものがあるのか

本記事作成では以下のサイトを参考にしました。

Windows Script Host Runtime Library

参照設定

参照設定するライブラリは、
Windows Script Host Object Model

VBA マクロ WshNetwork ネットワークドライブの割り当て等


Windows Script Host Runtime Libraryのメンバー

Member 説明
Drive 特定のディスク ドライブまたはネットワーク共有のプロパティへのアクセスを提供します。
Drives 使用可能なすべてのDriveオブジェクトで構成されるDrivesコレクションを返します。
File ファイルのすべてのプロパティへのアクセスを提供します。
Files Folder オブジェクト内の File オブジェクトのコレクション。
FileSystemObject コンピュータのファイル システムへのアクセスを提供するオブジェクト。
Folder フォルダーのすべてのプロパティへのアクセスを提供します。
Folders Folder オブジェクト内の Folder オブジェクトのコレクション。
TextStream ファイルへの順次アクセスを容易にします。
WshCollection WshNetwork.EnumNetworkDrivesメソッドとWshNetwork.EnumPrinterConnectionsメソッドによって返されます。
ネットワークドライブ/プリンターのローカル名とそれに関連付けられた UNC 名のペアを関連付けるコレクションです。
コレクション内の偶数番号の項目はドライブ/プリンターポートのローカル名を表し、奇数番号の項目は UNC 名を表します。
WshEnvironment Windows 環境変数のコレクションへのアクセスを提供します。
WshExec WshShell.Execメソッドによって返されます。スクリプトのステータスとエラー情報を提供します。
WshNetwork コンピュータが接続されているネットワーク上の共有リソースへのアクセスを提供します。
WshShell ネイティブ Windows シェルへのアクセスを提供します。
WshShortcut プログラムでショートカットを作成できます。
WshURLShortcut プログラムによってインターネット リソースへのショートカットを作成できます。

WshNetwork以外については、以下では解説していません。


VBAでのWshNetworkの使い方

事前バインディング

参照設定
Windows Script Host Object Model

VBA変数宣言方法
Dim wsh As New IWshRuntimeLibrary.WshNetwork

Dim wsh As IWshRuntimeLibrary.WshNetwork
Set wsh = New IWshRuntimeLibrary.WshNetwork

With New IWshRuntimeLibrary.WshNetwork
  '・・・
End With

遅延(実行時)バインディング

VBA変数宣言方法
Dim wsh As Object
Set wsh = CreateObject("WScript.Network")

With CreateObject("WScript.Network")
  '・・・
End With

WshNetworkのプロパティ

プロパティ 説明
ComputerName コンピューター名
UserDomain ユーザードメイン名
UserName ユーザー名

WshNetworkのプロパティ

メソッド 説明
AddWindowsPrinterConnection プリンター接続をシステムに追加します。
AddPrinterConnection MS-DOS ベースのプリンタ接続を追加します。
EnumNetworkDrives ネットワーク ドライブ マッピング情報を返します。
EnumPrinterConnections ネットワーク プリンターのマッピング情報を返します。
MapNetworkDrive 共有ネットワーク ドライブを追加します。
RemoveNetworkDrive 共有ネットワーク ドライブを削除します。
RemovePrinterConnection 共有ネットワーク プリンタ接続を削除します。
SetDefaultPrinter 既定のプリンターを変更します。


WshNetworkの簡易な使用例

ユーザー名、コンピュータ名

Sub UserName_ComputerName()
  Dim wsh As IWshRuntimeLibrary.WshNetwork
  Set wsh = New IWshRuntimeLibrary.WshNetwork
  With wsh
    MsgBox "ユーザー名:" & .UserName & vbLf & _
        "コンピュータ名:" & .ComputerName
  End With
End Sub


プリンターの一覧

Sub PrinterConnections()
  Dim v
  For Each v In CreateObject("WScript.Network").EnumPrinterConnections
    Debug.Print v
  Next
End Sub

上記では、CreateObjectの結果をFor Eachのオブジェクトに直接指定しています。


ネットワークドライブの一覧

Sub NetworkDrives()
  Dim wsh As New IWshRuntimeLibrary.WshNetwork
  Dim v
  For Each v In wsh.EnumNetworkDrives
    Debug.Print v
  Next
End Sub


ネットワークドライブの割り当てと解除

MapNetworkDrive

object.MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword])

引数 説明
object WshNetworkオブジェクト
strLocalName マップするドライブがローカルで認識される名前を示す文字列値。
strRemoteName 共有の UNC 名 (\\xxx\yyy) を示す文字列値。
bUpdateProfile オプション。
マッピング情報が現在のユーザーのプロファイルに保存されるかどうかを示すブール値。
bUpdateProfile が指定され、その値が true の場合、マッピングはユーザー プロファイルに保存されます (デフォルトはfalse)。
strUser オプション。
ユーザー名を示す文字列値。
現在のユーザー以外の資格情報を使用してネットワーク ドライブをマッピングする場合は、この引数を指定する必要があります。
strPassword オプション。
ユーザー パスワードを示す文字列値。
現在のユーザー以外の資格情報を使用してネットワーク ドライブをマッピングする場合は、この引数を指定する必要があります。

RemoveNetworkDrive

object.RemoveNetworkDrive(strName, [bForce], [bUpdateProfile])

引数 説明
object WshNetworkオブジェクト
strName 削除するマップされたドライブの名前を示す文字列値。strNameパラメータは、ドライブのマップ方法に応じて、ローカル名またはリモート名のいずれかになります。
bForce オプション。
マップされたドライブを強制的に削除するかどうかを示すブール値。
bForce が true の場合、このメソッドはリソースが使用されているかどうかに関係なく接続を削除します。
bUpdateProfile オプション。
ユーザーのプロファイルからマッピングを削除するかどうかを示す文字列値。
bUpdateProfile が true の場合、このマッピングはユーザー プロファイルから削除されます。
bUpdateProfileはデフォルトではfalseです。

VBAサンプル

Sub NetworkDrive()
  Dim sDrive As String: sDrive = "Z:"
  Dim sPath As String: sPath = "\\xxxxxx\yyyyyy"
  Dim sUser As String: sUser = "userを記載"
  Dim sPass As String: sPass = "passを記載"
  
  Dim wsh As Object
  Set wsh = CreateObject("WScript.Network")
  Dim objFSO As Object
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  
  '既存ドライブの確認と解除
  If objFSO.DriveExists(sDrive) Then
    Call wsh.RemoveNetworkDrive(sDrive, True, True)
  End If
  
  'ネットワークドライブの割り当て
  On Error Resume Next
  Call wsh.MapNetworkDrive(sDrive, sPath, False, sUser, sPass)
  If Err.Number <> 0 Then 'ドライブの割り当てに失敗
    MsgBox Err.Description
  End If
  
  'オブジェクトの開放
  Set wsh = Nothing
  Set objFSO = Nothing
End Sub




同じテーマ「マクロVBA技術解説」の記事

VBAで正規表現を利用する(RegExp)
VBAでメール送信する(CDO:Microsoft Collaboration Data Objects)
VBAでのOutlook自動操作
ADO(ActiveX Data Objects)の使い方の要点
特殊フォルダの取得(WScript.Shell,SpecialFolders)
参照設定、CreateObject、オブジェクト式の一覧
VBAのスクレイピングを簡単楽にしてくれるSelenium
VBA+SeleniumBasicで検索順位チェッカー作成
VBA+SeleniumBasicで検索順位チェッカー(改)
.Net FrameworkのSystem.Collectionsを利用
WshNetwork(ネットワークドライブの割り当て等)


新着記事NEW ・・・新着記事一覧を見る

AIがあればVBAはできる:セルに絵文字を入れる|生成AI活用研究(2025-05-07)
Geminiと100本ノック 15本目:シートの並べ替え|生成AI活用研究(5月6日)
Geminiと100本ノック 14本目:社外秘シート削除|生成AI活用研究(5月4日)
Geminiと100本ノック 13本目:文字列の部分フォント|生成AI活用研究(5月4日)
Geminiと100本ノック 12本目:セル結合の解除|生成AI活用研究(5月2日)
Geminiと100本ノック 11本目:セル結合の警告|生成AI活用研究(5月1日)
AI(Gemini)とエクセル数式対決 その2|生成AI活用研究(2025-04-30)
Geminiと100本ノック 10本目:行の削除|生成AI活用研究(4月30日)
AI(Gemini)とテーマを決めて議論|生成AI活用研究(2025-04-30)
Geminiと100本ノック 9本目:フィルターコピー|生成AI活用研究(4月29日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ