アクセス上位ページ
 
最近の更新内容

Excel VBA ≫ 3.FSO - FSOによるドライブ操作(4)-b.FSOによるドライブ操作A

ファイルシステムオブジェクトを使用したドライブ操作A

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


内容 プロパティ
ドライブ名取得 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

引数名 省略 説明
なし - -


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

<ドライブオブジェクトを取得する主な方法2つ>
  • fso.GetDrive を使用し、ドライブ名からドライブオブジェクトを取得します。
  • ⇒ 『 ドライブオブジェクトの取得 』 参照

  • すべてのドライブを処理の対象としたい場合は、 ファイルシステムオブジェクトの Drives プロパティ(fso.Drives)を使用します。 取得したドライブオブジェクトのコレクションは 繰り返し処理 For Each … Next でそれぞれのドライブオブジェクトへアクセスすることができます。
  • ⇒ 当ページ下の 使用例 参照


使用方法解説

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

    ⇒ 当ページ下の 使用例 参照

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

    <使用例>
    各ドライブ直下のファイル数とフォルダ数を表示する例です。
    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
    

    <実行結果(イミディエイトウィンドウ)>
    ドライブ名 :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
    

    <ドライブの一覧とその補足> ドライブの一覧
    • 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
    

カテゴリ内ページ



Page
Top