1.ドライブに関するワンポイントテクニック集 |
1.Drive オブジェクトのメソッドとプロパティについて 2.指定のドライブオブジェクトを取得する 3.使用できるドライブを取得する 4.Drive オブジェクト主要プロパティの簡単な取得方法と取得結果 1.指定のドライブの空き容量を取得する 2.ドライブ名を取得する 3.指定のドライブの種類を取得する 4.指定のドライブのファイルシステムの種類を取得する 5.指定のドライブの空き容量を取得する 6.指定のドライブが使用できるかどうかを取得する 7.指定のドライブのパスを取得する 8.指定のドライブのルートフォルダーを表す Folder オブジェクトを取得する 9.指定のドライブのシリアル番号を取得する 10.指定されたドライブのネットワーク共有名を取得する 11.指定のドライブの総容量をバイト単位で取得する 12.指定のドライブのボリューム名を設定又は、取得する 5.プログラムを起動したドライブ名を取得する 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:Microsoft Scripting Runtime (scrrun.dll) 参照設定方法参照 使用 API:なし その他 : : |
1.Drive オブジェクトのメソッドとプロパティについて |
Drive オブジェクトには、メソッドはありません。
|
2.指定のドライブオブジェクトを取得する |
Drives プロパティで、取得できるのは、Item と Count だけです。 又、Item には通常のように要素番号(数値)を指定する事はできません。ドライブを現す文字列変数を指定する事になります。 例、 c ,C ,C: ,C:\ のように 従って、予め、指定するドライブが分かっている場合は、非常に便利なのですが、ドライブをプログラムから指定する場合は結構やっかいな場合があります。(何をどのドライブにインストールするかは、個人の設定で変更できるので) 指定のドライブオブジェクトを取得する場合 Private Sub Command1_Click() Dim Fso As New FileSystemObject Dim FsoDrive As Drive '通常のように要素番号(0 or 1 等)では指定できません。 'カレントドライブを取得する Set FsoDrive = Fso.Drives.Item(Left$(CurDir, 1)) 'HOMEDRIVE を取得する Set FsoDrive = Fso.Drives.Item(Environ$("HOMEDRIVE")) 'Windows がインストールされているドライブを取得する Set FsoDrive = Fso.Drives.Item(Left$(Environ$("WINDIR"), 1)) Debug.Print FsoDrive.FreeSpace End Sub |
3.使用できるドライブを取得する |
Drive コントロールをForm 非表示で貼り付けておいて下記のようにして取得するのが一番簡単な方法です。 Private Sub Command1_Click() Dim i As Long For i = 0 To Drive1.ListCount - 1 Debug.Print Drive1.List(i) Next i End Sub 結果 c: [S3A7424D1234] d: [DATA] e: f: g: [HD-PEU2] FileSystemObject を使った場合 Private Sub Command1_Click() Dim Fso As New FileSystemObject Dim FsoDrives As Drives Dim FsoDrive As Drive Set FsoDrives = Fso.Drives For Each FsoDrive In FsoDrives If FsoDrive.IsReady Then Text1.Text = Text1.Text & FsoDrive.RootFolder & vbCrLf End If Next End Sub 結果 C:\ D:\ E:\ F:\ G:\ こちらは、エラーチェックが必要だし、DVD ドライブ等は、挿入されていないと表示されない。 |
4.Drive オブジェクト主要プロパティの簡単な取得方法と取得結果 |
1.指定のドライブの空き容量を取得する 2.ドライブ名を取得する 3.指定のドライブの種類を取得する 4.指定のドライブのファイルシステムの種類を取得する 5.指定のドライブの空き容量を取得する 6.指定のドライブが使用できるかどうかを取得する 7.指定のドライブのパスを取得する 8.指定のドライブのルートフォルダーを表す Folder オブジェクトを取得する 9.指定のドライブのシリアル番号を取得する 10.指定されたドライブのネットワーク共有名を取得する 11.指定のドライブの総容量をバイト単位で取得する 12.指定のドライブのボリューム名を設定又は、取得する Private Sub Command1_Click() Dim Fso As New FileSystemObject Dim FsoDrives As Drives Dim FsoDrive As Drive Dim myText As String Set FsoDrives = Fso.Drives Debug.Print FsoDrives.Count '結果 5 Text1.Text = "" For Each FsoDrive In FsoDrives If FsoDrive.IsReady Then myText = myText & "---------------------------------------" & vbCrLf myText = myText & "AvailableSpace : " & FsoDrive.AvailableSpace & vbCrLf myText = myText & "DriveLetter : " & FsoDrive.DriveLetter & vbCrLf myText = myText & "DriveType : " & FsoDrive.DriveType & vbCrLf myText = myText & "FileSystem : " & FsoDrive.FileSystem & vbCrLf myText = myText & "IsReady : " & FsoDrive.IsReady & vbCrLf myText = myText & "Path : " & FsoDrive.Path & vbCrLf myText = myText & "RootFolder : " & FsoDrive.RootFolder & vbCrLf myText = myText & "SerialNumber : " & FsoDrive.SerialNumber & vbCrLf myText = myText & "ShareName : " & FsoDrive.ShareName & vbCrLf myText = myText & "TotalSize : " & FsoDrive.TotalSize & vbCrLf myText = myText & "VolumeName : " & FsoDrive.VolumeName & vbCrLf End If Next Text1.Text = myText End Sub 上記実行結果の一部(私の環境での) --------------------------------------- AvailableSpace : 120056344576 DriveLetter : C DriveType : 2 FileSystem : NTFS IsReady : True Path : C: RootFolder : C:\ SerialNumber : 1617481234 ShareName : TotalSize : 254716932096 VolumeName : S3A7424D1234 --------------------------------------- 尚、DriveType は、0 = "不明" 1 = "リムーバブルディスク" 2 = "ハードディスク" 3 = "ネットワークドライブ" 4 = "CD-ROM" 5 = "RAM ディスク" |
5.プログラムを起動したドライブ名を取得する |
Private Sub Command1_Click() '------------------------- FileSystemObject での操作 ------------------------- Dim Fso As New FileSystemObject 'プログラムを起動したドライブ名を取得 Debug.Print Fso.GetDriveName(App.Path) 'C: End Sub |
6. |
検索キーワード及びサンプルコードの別名(機能名) |