このページでは下表のメソッドについて説明します。これらはすべて FileSystemObject のメソッドおよびプロパティになります。
内容 | メソッド/プロパティ |
---|---|
ドライブオブジェクト取得 | fso.GetDrive |
ドライブ存在チェック | fso.DriveExists |
ドライブコレクション取得 | fso.Drives |
使用方法
引数名 | 省略 | 説明 |
---|---|---|
DriveSpec | × | ドライブ名 (c)、コロン付きのドライブ名 (c:)、コロンとパスの区切り文字の付いたドライブ名 (c:¥など)、 任意のネットワーク共有名 (¥¥computer2¥share1など) のいずれかを指定します。 |
各メソッドの説明
fso.GetDrive
引数で指定したドライブのドライブブジェクトを返します。ネットワーク上の共有ドライブの場合は事前に fso.DriveExists で共有のチェックをしておくとよいでしょう。
Dim fso As Object
Dim driveObj As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set driveObj = fso.GetDrive("C")
'ドライブオブジェクトに対する処理
'オブジェクト変数のクリア
Set fso = Nothing
Set driveObj = Nothing
fso.DriveExists
引数で指定したドライブの存在チェックを行い、結果を True または False で返します。
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
if Not fso.DirveExists("\\computer2\share1") then
MsgBox "ネットワーク共有ドライブが存在しません。処理を中止します。"
End
End If
'オブジェクト変数のクリア
Set fso = Nothing
fso.Drives
ドライブオブジェクトのコレクションを取得します。このコレクションを使用した例は以下のサンプルを参照してください。
すべてのドライブ名とそのタイプを表示する例
fso.Drives プロパティによりドライブコレクションを取得した後、For Each…Next により各ドライブ名とタイプをイミディエイトウィンドウへ表示する例です。
※drive.DriveLetter と drive.DriveType プロパティについては次のページで説明します。
Sub sample_fs041_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
End With
Next
'オブジェクト変数のクリア
Set fso = Nothing
Set driveObj = Nothing
End Sub
drive.DriveLetter
drive.DriveType Setステートメント
For Each…Next Withステートメント
テスト環境のドライブは以下のとおりです。
- Cドライブ ・・・ 内臓ハードディスク
- Dドライブ ・・・ 内臓ハードディスク
- Eドライブ ・・・ 内臓DVDドライブ
- Fドライブ ・・・ 外付けSDカード
- Zドライブ ・・・ ネットワーク上の ¥¥Server¥Users¥Public を割りあて
上記サンプルマクロを実行すると各ドライブの状況がイミディエイトウィンドウへ表示されます。