VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 ドライブ関係のメニュー
1.ドライブに関するワンポイントテクニック集
2.ドライブの種類を取得する
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載のドライブに関するサンプル


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 オブジェクトには、メソッドはありません。
AvailableSpace プロパティ 指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク容量(空き領域)を返します。通常、AvailableSpace プロパティは FreeSpace プロパティと同じ値を返します。これらの 2 つの値が異なる可能性があるのは、コンピューター システムがディスククォータ機能をサポートしている場合だけです。
Debug.Print FsoDrive.AvailableSpace '結果 120068419584
DriveLetter プロパティ 物理ローカルドライブまたはネットワーク共有のドライブ名を返します。値の取得のみ可能です。指定したドライブにドライブ名が関連付けられていなかった場合、DriveLetter プロパティの値は長さ 0 の文字列 ("") になります。たとえば、ドライブ名の割り当てられていないネットワークの共有などが該当します。
Debug.Print FsoDrive.DriveLetter '結果 C,D,E,F,G
DriveType プロパティ 指定されたドライブの種類を示す値を返します。
Debug.Print FsoDrive.DriveType '結果 2,2,4,1,2
FileSystem プロパティ 指定されたドライブに使用されているファイルシステムの種類を返します。
取得される可能性のある種類には、FAT、NTFS、CDFS があります。
Debug.Print FsoDrive.FileSystem '結果 NTFS
FreeSpace プロパティ 指定されたドライブまたはネットワーク共有でユーザーが使用できるディスクの空き境域を返します。値の取得のみ可能です。 AvailableSpace プロパティ 同じ
Debug.Print FsoDrive.FreeSpace '結果 120070152192
IsReady プロパティ 指定されたドライブの準備ができている場合は真 (true) を返します。準備ができてない場合は偽 (false) を返します。リムーバブルディスク ドライブおよび CD-ROM ドライブの場合は、ドライブにメディアがセットされており、アクセスできる状態にある場合にだけ真 (true) になります。
Debug.Print FsoDrive.IsReady '結果 True ,True ,False ,True ,True
Path プロパティ 指定されたファイル、フォルダー、またはドライブのパスを返します。
ドライブ名の場合、返される文字列にルートディレクトリは含まれません。たとえば、C ドライブの場合、C:\ ではなく C: が返されます。
Debug.Print FsoDrive.Path '結果 C: ,D: ,E: ,F: ,G:
RootFolder プロパティ 指定されたドライブのルートフォルダーを表す Folder オブジェクトを返します。値の取得のみ可能です。
Debug.Print FsoDrive.RootFolder '結果 C:\ ,D:\
SerialNumber プロパティ ディスクボリュームを一意に識別する小数のシリアル番号を返します。
SerialNumber プロパティを使用して、リムーバブルメディアのドライブに正しいディスクが挿入されたことを確認できます。
Debug.Print FsoDrive.SerialNumber '結果 1617481234
ShareName プロパティ 指定されたドライブのネットワーク共有名を返します。
object にネットワークドライブでないドライブを指定すると、長さ 0 の文字列 ("") が返されます。
Debug.Print FsoDrive.ShareName '結果 
TotalSize プロパティ ドライブまたはネットワーク共有の総容量をバイト単位で返します。
Debug.Print FsoDrive.TotalSize '結果 254716932096
VolumeName プロパティ 指定されたドライブのボリューム名を設定または返します。値の取得も可能です
Debug.Print FsoDrive.VolumeName '結果 S3A7474D123

このページのトップへ移動します。 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.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)





このページのトップへ移動します。