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 ・・・新着記事一覧を見る

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


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

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」をお願いいたします。
本文下部へ