如何在Excel 2016 VBA中读取已用或可用内存量
我似乎找不到返回正在使用的内存或可用内存的VBA命令。 在Excel 2013中使用了Application.MemoryUsed,但当我在Excel 2016中尝试使用它时,无论我是否使用如何在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
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