ExcelのVBAには、Excelが使用できるメモリの総容量や、空き容量などを取得するプロパティがあります。
Sub Sample1() Dim n As Long, msg As String n = Application.MemoryTotal msg = msg & "Excelが使用できるメモリの総容量:" & Format(n / 1024, "#,##0") & "KB" & vbCrLf n = Application.MemoryUsed msg = msg & "Excelが使用しているメモリの総容量:" & Format(n / 1024, "#,##0") & "KB" & vbCrLf n = Application.MemoryFree msg = msg & "Excelが使用できるメモリの空き容量:" & Format(n / 1024, "#,##0") & "KB" MsgBox msg End Sub
【注意】
上記のコードで使用している「Application.MemoryTotal」「Application.MemoryUsed」「Application.MemoryFree」は、Excel 2007以降使えなくなりました。
「Excelが使用できる」ということですが、パソコン全体の情報ではありません。パソコンに搭載されている物理メモリの容量や、使用している仮想メモリの情報などは次のようにAPIで取得します。
Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS) Private Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type Sub Sample2() Dim msg As String, MemData As MEMORYSTATUS GlobalMemoryStatus MemData With MemData msg = msg & "物理メモリサイズ:" & Format(.dwTotalPhys / 1024, "#,##0") & _ "KB" & vbCrLf msg = msg & "使用可能な物理メモリ:" & Format(.dwAvailPhys / 1024, "#,##0") & _ "KB" & vbCrLf msg = msg & "ページファイルサイズ:" & Format(.dwTotalPageFile / 1024, "#,##0") & _ "KB" & vbCrLf msg = msg & "使用可能なページファイル:" & Format(.dwAvailPageFile / 1024, "#,##0") & _ "KB" & vbCrLf msg = msg & "仮想メモリサイズ:" & Format(.dwTotalVirtual / 1024, "#,##0") & _ "KB" & vbCrLf msg = msg & "使用可能な仮想メモリ:" & Format(.dwAvailVirtual / 1024, "#,##0") & _ "KB" End With MsgBox msg End Sub