メモリの情報を取得

メモリの使用率、物理メモリ用容量などの情報を取得する。

VBAでメモリの情報を取得には物理メモリと仮想メモリ両方の情報が取得できるGlobalMemoryStatusEx関数を利用しています。

サンプルコードには下記の情報を取得するコードを掲載しています。
 ・メモリの使用率、物理メモリ容量、ページングファイル容量、仮想メモリ容量
サイズはバイト単位での取得されるのでコードではMBもしくはKBに変換して出力させています。

Private Declare Function GlobalMemoryStatusEx Lib "kernel32" (mseStatus As MEMORYSTATUSEX) As Long

Private Type MEMORYSTATUSEX
     dwLength As Long                    'MEMORYSTATUSの大きさ
     dwMemoryLoad As Long                'メモリ使用率
     ullTotalPhys As Currency            '物理メモリの総容量
     ullAvailPhys As Currency            '物理メモリの空き容量
     ullTotalPageFile As Currency        'ページングファイルの最大容量
     ullAvailPageFile As Currency        '使用可能なページングファイル容量
     ullTotalVirtual As Currency         '仮想メモリの総容量
     ullAvailVirtual As Currency         '使用可能な仮想メモリ容量
     ullAvailExtendedVirtual As Currency '仮想メモリの拡張容量(この値は常に0です)
 End Type

'*****************************************************************
' メモリ情報の取得
'*****************************************************************
Sub getMemoryInfo()
    Dim dMemoryLoad As Double
    Dim dTotPhys As Double
    Dim dAvailPhys As Double
    Dim dTotalPageFile As Double
    Dim dAvailPageFile As Double
    Dim dTotalVirtual As Double
    Dim dAvailVirtual As Double
    
    Dim MemStat As MEMORYSTATUSEX
    MemStat.dwLength = Len(MemStat)

    Call GlobalMemoryStatusEx(MemStat)
    dMemoryLoad = MemStat.dwMemoryLoad          'メモリ使用率
    dTotPhys = MemStat.ullTotalPhys * 10000&    '物理メモリの総容量
    dAvailPhys = MemStat.ullAvailPhys * 10000&  '物理メモリの空き容量
    dTotalPageFile = MemStat.ullTotalPageFile   'ページングファイルの最大容量
    dAvailPageFile = MemStat.ullAvailPageFile   '使用可能なページングファイル容量
    dTotalVirtual = MemStat.ullTotalVirtual     '仮想メモリの総容量
    dAvailVirtual = MemStat.ullAvailVirtual     '使用可能な仮想メモリ容量
    'dTotalVirtual = MemStat.ullAvailExtendedVirtual     '0なので取得しない
    
    'メモリ情報を出力
    Debug.Print "メモリ使用率 : " & dMemoryLoad & "%"
    Debug.Print "全物理メモリ : " & Format(dTotPhys / (1024& * 1024), "#,##0") & "MB"
    Debug.Print "利用可能メモリ : " & Format(dAvailPhys / (1024& * 1024), "#,##0") & "MB"
    Debug.Print "ページング可能な最大ファイルサイズ : " & Format(dTotalPageFile / 1024, "#,##0") & "KB"
    Debug.Print "現在ページング可能なファイルサイズ : " & Format(dAvailPageFile / 1024, "#,##0") & "KB"
    Debug.Print "仮想メモリの総容量 : " & Format(dTotalVirtual / 1024, "#,##0") & "KB"
    Debug.Print "使用可能な仮想メモリ容量 : " & Format(dAvailVirtual / 1024, "#,##0") & "KB"
    
End Sub

 ■実行結果