#183 ドライブのボリューム名を得るには? VBA、API

Accessを使って、ディスク上のドライブやファイル情報をデータベース化して管理したいような場合に使える方法です。Windows APIの「GetVolumeInformation」関数を使うことによって、指定したドライブのボリューム名を取得することができます。


まず標準モジュールのDeclarationsセクションに次のコードを記述します。"Declare"の前に"Private"を付けることによってフォームのモジュールにも記述できます。
Declare Function GetVolumeInformation Lib "kernel32" Alias _
  "GetVolumeInformationA" _
  (ByVal lpRootPathName As String, _
  ByVal lpVolumeNameBuffer As String, _
  ByVal nVolumeNameSize As Long, _
  lpVolumeSerialNumber As Long, _
  lpMaximumComponentLength As Long, _
  lpFileSystemFlags As Long, _
  ByVal lpFileSystemNameBuffer As String, _
  ByVal nFileSystemNameSize As Long) As Long

以下は、「Cドライブ」のボリューム名を取得して、メッセージボックスに表示する例です。適当なプロシージャに組み込んで使ってください。また、変数strRootPathを引数、変数strVolNameを返り値とするFunctionプロシージャとして作っておくと、いろいろと汎用的に使えると思います。
Dim strRootPath As String
Dim strVolName As String * 128
Dim lngVolSerNum As Long
Dim lngMaxComponentLen As Long
Dim lngFSFlags As Long
Dim strFSName As String * 128

'ボリューム名を取得したいドライブのルートディレクトリを指定します
strRootPath = "C:\"

'ボリュームに関する情報を取得します
'変数strVolNameにボリューム名が返されます
GetVolumeInformation strRootPath, strVolName, Len(strVolName), _
                      lngVolSerNum, lngMaxComponentLen, _
                      lngFSFlags, strFSName, Len(strFSName)

'後続のNullを取り除いて、ボリューム名をメッセージ表示します
MsgBox Left$(strVolName, InStr(strVolName, vbNullChar) - 1)
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved