この記事では、ドライブの使用量を取得する方法についてご説明します。
【動画】ドライブの使用量を取得する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
ドライブのルートディレクトリを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:") 'ドライブの使用量を表示(GBで表示) MsgBox (drv.totalSize - drv.FreeSpace) / 1024 / 1024 / 1024 & "(GB)" '後処理 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行目です。
'ドライブの使用量を表示(GBで表示) MsgBox (drv.totalSize - drv.FreeSpace) / 1024 / 1024 / 1024 & "(GB)"
コードの説明
以上のコードは、ドライブの使用量をGB単位でメッセージボックスに表示させる処理のコードです。
ドライブの使用量は次の計算式で算出することができます。
ドライブの全体容量 – ドライブの空き容量
ドライブの全体容量はtotalSizeプロパティから、ドライブの空き容量はFreeSpaceプロパティから取得することができます。
なお、今回は以上の計算で取得したドライブの使用量をGB単位で出力します。
totalSizeプロパティとFreeSpaceプロパティが返す値は、単位がバイトなので分かりづらいためGB単位に変換します。
バイトからGB単位に変換するには、3回1024の値で割ります。(1キロバイトは1024バイト、1メガバイトは1024キロバイト、1ギガバイトは1024メガバイト)
動作確認
今回はCドライブで動作確認してみます。
動作確認用PCのドライブの状況は以下のとおりです。
マクロ実行後
マクロを実行すると、Cドライブの使用量が出力されました。
最後に
この記事では、ドライブの使用量を取得する方法についてご説明します。
マクロ上でドライブの使用量を取得したい場合は本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。