ファイルシステムオブジェクトによるドライブ操作(2)

このページでは下表のプロパティについて説明します。これらはすべて ドライブオブジェクトのプロパティになります。

内容 プロパティ
ドライブ名取得 drive.DriveLetter
ルートフォルダ取得 drive.RootFolder
ドライブパス取得 drive.Path
ドライブタイプ取得 drive.DriveType
ドライブ状態取得 drive.IsReady
トータルサイズ取得 drive.TotalSize
利用可能領域取得 drive.AvailableSpace
空き領域取得 drive.FreeSpace
ボリューム名取得 drive.VolumeName
スポンサーリンク

使用方法

構文
drive.DriveLetter
drive.RootFolder
drive.Path
drive.DriveType
drive.IsReady
drive.TotalSize
drive.AvailableSpace
drive.FreeSpace
drive.VolumeName

上記のプロパティを使用するには、以下に示すいずれかの方法で事前にドライブオブジェクトを取得しておく必要があります。

  • fso.GetDrive を使用し、ドライブ名からドライブオブジェクトを取得します。
    ⇒ 『 ドライブオブジェクトの取得 』 参照
  • fso.Drives によりドライブオブジェクトのコレクションを取得し、ループ処理などでそれぞれのドライブオブジェクトへアクセスします。
    ⇒ 当ページ下の使用例『ドライブ名などを一覧表示する例』参照

各プロパティの説明

drive.DriveLetter

物理ドライブ名またはネットワーク共有のドライブ名を取得します。fso.Drives プロパティにより取得したドライブオブジェクトのコレクションに対して繰り返し処理を行う場合に、現在のドライブがどのドライブかを判断するのに使用したりします。

⇒ 当ページ下の使用例『ドライブ名などを一覧表示する例』参照

drive.RootFolder

指定されたドライブのルートフォルダを表すフォルダオブジェクトを取得します。ルートフォルダのフォルダオブジェクトを取得することで、指定されたドライブ配下でのファイル操作やフォルダ操作が可能になります。

Sub sample_ef042_t1()
	Dim fso         As Object
	Dim driveObj    As Object

	Set fso = CreateObject("Scripting.FileSystemObject")

	For Each driveObj In fso.Drives
	    Debug.Print "ドライブ名 :" & driveObj.DriveLetter
	    'ドライブの状態チェック
	    If driveObj.IsReady Then
	        Debug.Print "状態    :使用可"

	        'ルートフォルダ直下のファイルとフォルダ数を表示
	        With driveObj.RootFolder
	            Debug.Print "ファイル数 :" & .Files.count
	            Debug.Print "フォルダ数 :" & .SubFolders.count
	        End With
	    Else
	        Debug.Print "状態    :使用不可"
	    End If
	Next

	Set fso = Nothing
	Set driveObj = Nothing
End Sub

 Setステートメント For Each…Next Withステートメント 

  • マクロ実行結果(イミディエイトウィンドウ
    ドライブ名 :C
    状態    :使用可
    ファイル数 :9
    フォルダ数 :24
    ドライブ名 :D
    状態    :使用可
    ファイル数 :0
    フォルダ数 :14
    ドライブ名 :E
    状態    :使用不可

drive.Path

ドライブのパスを取得します。

drive.DriveType

指定されたドライブの種類を示す値を取得します。

フォルダタイプの値
説明
0 不明
1 リムーバブル ディスク
2 ハード ディスク
3 ネットワーク ドライブ
4 CD/DVD-ROM
5 RAM ディスク

drive.IsReady

指定されたドライブの準備ができているか否かを True または False で返します。CD/DVD-ROM ドライブなどの場合、メディアがセットされてアクセスできる状態の場合のみ True を返します。

drive.TotalSize

ドライブまたはネットワーク共有の総容量をバイト単位で取得します。キロバイト単位にするには 2^10 = 1024、メガバイト単位にするには 1024*1024 で除算します。

drive.AvailableSpace

指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク容量をバイト単位で取得します。

drive.FreeSpace

指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク空き容量をバイト単位で取得します。

drive.VolumeName

指定されたドライブのボリューム名の設定および取得をします。

すべてのドライブ名とその容量などを一覧表示する例

fso.GetDrives メソッドによりドライブコレクションを取得した後、For Each…Next により各ドライブ名とその情報をイミディエイトウィンドウへ表示する例です。

内臓DVDドライブ(Eドライブ)にはメディアが入っていないため、drive.IsReady は False となります。メディアが入っていると True が返ってきます。

Sub sample_fs042_01()
    Dim fso         As Object
    Dim driveObj    As Object
    Dim strType     As String

    Set fso = CreateObject("Scripting.FileSystemObject")

    For Each driveObj In fso.Drives
        With driveObj
            Debug.Print "ドライブ:" & .DriveLetter
            Select Case .DriveType
                Case 0: strType = "不明"
                Case 1: strType = "リムーバブル ディスク"
                Case 2: strType = "ハード ディスク"
                Case 3: strType = "ネットワーク ドライブ"
                Case 4: strType = "CD/DVD-ROM"
                Case 5: strType = "RAM ディスク"
            End Select
            Debug.Print "タイプ :" & strType

            If .IsReady Then
                Debug.Print "状態  :使用可"
                Debug.Print "総容量 :" & _
                    Round(.TotalSize / 1024 ^ 3, 1) & " GB"
                Debug.Print "空き容量:" & _
                    Round(.FreeSpace / 1024 ^ 3, 1) & " GB"
            Else
                Debug.Print "状態  :使用不可"
            End If
        End With
    Next


    'オブジェクト変数のクリア
    Set fso = Nothing
    Set driveObj = Nothing
End Sub

 Setステートメント   For Each…Next
  Withステートメント  Round関数

テスト環境のドライブは以下のとおりです。

  • Cドライブ ・・・ 内臓ハードディスク
  • Dドライブ ・・・ 内臓ハードディスク
  • Eドライブ ・・・ 内臓DVDドライブ(メディアなし)
  • Fドライブ ・・・ 外付けSDカード
  • Zドライブ ・・・ ネットワーク上の ¥¥Server¥Users¥Public を割りあて
ドライブの一覧
ドライブの一覧

上記サンプルマクロを実行すると各ドライブの状況がイミディエイトウィンドウへ表示されます。

  • マクロ実行結果(イミディエイトウィンドウ
    ドライブ:C
    タイプ :ハード ディスク
    状態  :使用可
    総容量 :100 GB
    空き容量:26.1 GB
    ドライブ:D
    タイプ :ハード ディスク
    状態  :使用可
    総容量 :181.1 GB
    空き容量:129.1 GB
    ドライブ:E
    タイプ :CD/DVD-ROM
    状態  :使用不可
    ドライブ:F
    タイプ :リムーバブル ディスク
    状態  :使用可
    総容量 :1.8 GB
    空き容量:1.6 GB
    ドライブ:Z
    タイプ :ネットワーク ドライブ
    状態  :使用可
    総容量 :1862.9 GB
    空き容量:1774.9 GB

 
ファイルシステムオブジェクトのプロパティ・メソッド

タイトルとURLをコピーしました