如何在Excel 2016 VBA中读取已用或可用内存量

如何在Excel 2016 VBA中读取已用或可用内存量,excel,excel-2016,vba,Excel,Excel 2016,Vba,我似乎找不到返回正在使用的内存或可用内存的VBA命令。 在Excel 2013中使用了Application.MemoryUsed,但当我在Excel 2016中尝试使用它时,无论我是否使用 dim myVar as variant myvar = Application.MemoryUsed 或 这可能很简单。或者?我提出问题后不久就找到了答案 可在此处找到: 感谢Anonimita 我可能错了,但我认为这会返回以KB为单位的工作集大小。Windows APIG

我似乎找不到返回正在使用的内存或可用内存的VBA命令。 在Excel 2013中使用了Application.MemoryUsed,但当我在Excel 2016中尝试使用它时,无论我是否使用

    dim myVar      as variant
      myvar = Application.MemoryUsed


这可能很简单。或者?

我提出问题后不久就找到了答案

可在此处找到:


感谢Anonimita

我可能错了,但我认为这会返回以KB为单位的工作集大小。Windows API
GetProcessWorkingSetSize()
函数表示它返回以字节为单位的内存位置。@PaulDH-
GetProcessWorkingSetSize()
函数返回以字节为单位的值。
/1024
将其转换为千字节。因此,上面的函数返回Excel的
工作集(内存)
(KB),可以通过打开任务管理器中的
进程
选项卡,点击ALT+VS并选中复选框查看所有7列
内存
。@ashleedawg-因此我们达成一致。我添加了注释,因为原始代码段中的注释指示以MB为单位的返回。谢谢你在我的评论中添加了额外的解释。实际上,我最初是在不同意的情况下发表评论的,后来我注意到
/1024
:)时将其删除了
    MsgBox CStr(Application.MemoryUsed)
   Declare Function GetCurrentProcessId Lib "kernel32" () As Long

   Function GetMemUsage()

     ' Returns the current Excel.Application
     ' memory usage in MB

     Set objSWbemServices = GetObject("winmgmts:")
     GetMemUsage = objSWbemServices.Get( _
       "Win32_Process.Handle='" & _
       GetCurrentProcessId & "'").WorkingSetSize / 1024

     Set objSWbemServices = Nothing

   End Function