【VBA】ドライブ情報(容量、種類、ネットワーク共有名等)を取得する方法/GetDriveメソッドとDriveオブジェクト
更新日:2024/01/18
VBAを使用するとコンピュータに接続されているドライブの空き容量や、FATやNTFSなどのファイルシステムの種類などのドライブ情報を取得できます。
ここでは、ドライブ情報を取得する方法をお伝えします。
ドライブ情報の取得
ドライブ情報はGetDriveメソッドで取得できます。
GetDriveメソッドは外部ライブラリのWindows Script Runtimeに含まれているFileSystemObjectオブジェクトのメンバーです。
または、FileSystemObjectオブジェクトのDrivesプロパティでもドライブ情報を取得できます。
FileSystemObjectオブジェクトの取得方法は二つあります。
一つは、文字列"Scripting.FileSystemObject"をCreateObject関数に渡す方法です。
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
もう一つはVBエディタのメニュー:ツールから参照設定画面を開いて『Microsoft Scriptiong Runtime』を参照設定してから次のコードを実行する方法です。
Dim fso As New Scripting.FileSystemObject
参照設定をおこなうと、コード入力時にメソッド名候補が表示されます。
入力ミスを防げるので便利です。
GetDriveメソッド
GetDriveはドライブ名または共有名を指定してドライブ情報を取得するメソッドです。
FileSystemObjectオブジェクト.GetDrive( DriveSpec )
DriveSpecは、"C"、"C:"などのドライブ名、"\\pcname\sharename"等の共有名を指定します。
戻り値はDriveオブジェクトです。
Sub getDriveSample()
Dim fso As New Scripting.FileSystemObject
Dim driveInfo As drive
Set driveInfo = fso.GetDrive("C")
With driveInfo
Debug.Print "容量: " & .TotalSize & "バイト"
Debug.Print "空き容量: " & .FreeSpace & "バイト"
Debug.Print "システム種別: " & .FileSystem
End With
End Sub
実行すると、ドライブの情報がイミディエイトウィンドウに表示されます。
容量: 524082098176バイト
空き容量: 48267239424バイト
システム種別: NTFS
※結果は環境によって異なります。
Drivesプロパティ
FileSystemObjectオブジェクトのDrivesプロパティは、コンピューターに接続されているドライブのDriveオブジェクトを格納するコレクションです。
For Eachで順番に取り出すか、"c"または"c:"等のドライブ名をキーとしてDriveオブジェクトを取り出します。
Sub drivesSample()
Dim fso As New Scripting.FileSystemObject
Dim drv As drive
Dim driveType() As Variant
driveType = Array("不明", "リムーバブルデバイス", "固定ディスク", _
"ネットワークドライブ", "光ディスクデバイス", "RAMディスク")
For Each drv In fso.Drives
With drv
Debug.Print "ドライブ名: " & .DriveLetter
Debug.Print "タイプ: " & driveType(.driveType)
If .IsReady Then
Debug.Print "システム種別: " & .FileSystem
Debug.Print "容量: " & .TotalSize & "バイト"
Debug.Print "空き容量: " & .FreeSpace & "バイト"
Else
Debug.Print "準備ができていません"
End If
Debug.Print vbCrLf
End With
Next drv
End Sub
実行すると、次のような情報がイミディエイトウィンドウに表示されます。
ドライブ名: C
タイプ: 固定ディスク
システム種別: NTFS
容量: 524082098176バイト
空き容量: 48212729856バイト
ドライブ名: D
タイプ: 固定ディスク
システム種別: NTFS
容量: 1000203087872バイト
空き容量: 925569429504バイト
ドライブ名: E
タイプ: 光ディスクデバイス
準備ができていません
※結果は環境によって異なります。
Driveオブジェクト
Driveオブジェクトはコンピューターに接続されているドライブの情報を格納するオブジェクトです。
FileSystemObjectオブジェクトのGetDriveメソッドで取得できます。
プロパティ
Driveオブジェクトは次のプロパティを持っています。
プロパティ名 | データ型 | 内容 | 例 |
---|---|---|---|
AvailableSpace | Variant型 | 使用可能なサイズ | 12345678901 |
DriveLetter | String型 | ドライブ文字 | "C" |
DriveType | DriveTypeConst型 | ドライブの種類 | Fixed |
FileSystem | String型 | ファイルシステムの種類 | "NTFS" |
FreeSpace | Variant型 | 空き容量 基本的にはAvailableSpaceと同じ | 12345678901 |
IsReady | Boolean型 | 準備できているかどうか | True |
Path | String型 | ドライブのパス名 | "C:" |
RootFolder | Folderオブジェクト | ルートフォルダー | --- |
SerialNumber | Long型 | 一意のシリアル値 | 1234567890 |
ShareName | String型 | ネットワーク共有名 | "" |
TotalSize | Variant型 | トータルサイズ | 543219876543 |
VolumeName | String型 | ボリューム名 ※値設定可能 | "Windows" |
DriveTypeプロパティは、次のDriveTypeConstのどれか一つの値をとります。
定数 | 値 | 内容 |
---|---|---|
CDRom | 4 | 光ディスクデバイス |
Fixed | 2 | 固定ディスク |
RamDisk | 5 | RAMディスク |
Remote | 3 | ネットワークドライブ |
Removable | 1 | リムーバブルデバイス |
UnknownType | 0 | 不明 |
VolumeNameは値の設定ができます。
Dim driveObj as Drive
Set driveObj = fs.GetDrive( "d" )
driveObj.VolumeName = "new volume name"
メソッド
Driveオブジェクトのメソッドはありません。
更新日:2024/01/18
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。