この記事では、ドライブの使用率を取得する方法についてご説明します。
【動画】ドライブの使用率を取得する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
ドライブのルートディレクトリをGetDriveメソッドの引数に指定して実行してドライブの情報を取得します。
取得したドライブの情報の中から全体容量と空き容量を取得して、空き容量から全体容量を割ることでドライブの使用率を取得することができます。
マクロ作成の流れ
コードの例
Option Explicit Sub test() Dim fso As Object 'FileSystemObjectのインスタンス用変数 Dim drv As Object 'ドライブ用変数 'FileSystemObjectのインスタンスを生成する Set fso = CreateObject("Scripting.FileSystemObject") 'ドライブのルートディレクトリを指定してドライブ情報を取得する Set drv = fso.GetDrive("C:") 'ドライブの使用率を表示する MsgBox Format(((drv.totalSize - drv.FreeSpace) / drv.totalSize), "0.00") & "%" '後処理 Set fso = Nothing Set drv = Nothing End Sub
注目すべきコード①
最初に見て頂きたいのは9行目から12行目です。
'FileSystemObjectのインスタンスを生成する Set fso = CreateObject("Scripting.FileSystemObject") 'ドライブのルートディレクトリを指定してドライブ情報を取得する Set drv = fso.GetDrive("C:")
コードの説明
以上のコードは、FileSystemObjectのインスタンスを生成および、ドライブのルートディレクトリをGetDriveメソッドの引数に指定して実行する処理のコードです。
ドライブのルートディレクトリとはドライブの最上位階層(Cドライブ直下)のディレクトリで、GetDriveメソッドの引数には、Cドライブなら「C:」または「C:¥」と記述します。
GetDriveメソッドを実行するとドライブの情報が取得でき、変数drvに格納されます。
注目すべきコード②
次に見て頂きたいのは15行目です。
'ドライブの使用率を表示する MsgBox Format(((drv.totalSize - drv.FreeSpace) / drv.totalSize), "0.00") & "%"
コードの説明
以上のコードは、ドライブの使用率を算出してメッセージボックスに表示させる処理のコードです。
ドライブの使用率は次の計算式で算出することができます。
(ドライブの全体容量 – ドライブの空き容量) / ドライブの全体容量
ドライブの全体容量はtotalSizeプロパティから、ドライブの空き容量はFreeSpaceから取得することができます。
例えばドライブの全体容量が1000GBで500GBの容量に空きがある場合は半分使用されている、パーセンテージで言うと50%使用されていることが分かるかと思います。
計算式に当てはめると、(1000 – 500) / 1000 なので、計算結果は0.5となります。
この値は割合で、全体容量の割合を1とすると0.5は半分、パーセンテージで表すと50%となります。
コードでは、Format関数を使ってこの0.5の値に対して”0.00″を指定していますが、これは小数点2桁のパーセンテージ表示にするという意味です。
ドライブの全体容量が1000GBで500GBの容量に空きがある場合は、50%の使用率です。
動作確認
今回はCドライブで動作確認してみます。
動作確認用PCのドライブの状況は以下のとおりです。
マクロ実行後
マクロを実行すると、Cドライブの使用率が出力されました。
(511116832768 – 27567255552) / 511116832768 で、0.946064669005896 なので、小数点2桁切り上げで0.95です。
さらにパーセンテージ表示で95%になります。
最後に
この記事では、ドライブの使用率を取得する方法についてご説明しました。
マクロ上でドライブの使用率を取得したい場合は本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。