Страницы: 1
RSS
Как в VBA узнать сколько памяти занимает процесс Excel?, контролировать объем занимаемой памяти
 
При обновлении сводной таблицы на базе большой таблицы данных, Excel 2013 иногда загибается. Происходит это когда процесс Excel начинает занимать в оперативке больше одного с лишним Гбайта. Использую файлы формата xlsb. Их размеры достигают 90 Мбайт. Обновляю сводники из VBA, перед этим происходит еще ряд действий. Хотел бы в VBA перед обновлением сводника контролировать размер занимаемой Excel-ем оперативки и принимать решение - обновлять или нет. Вопрос: Как в VBA узнать сколько памяти занимает процесс Excel?
 
Возьмите нужное отсюда: http://www.vbforums.com/showthread.php?795465-VB6-Get-information-about-memory-usage
 
Казанский, по вашей ссылке код выдает много лишнего, и не компилируется.

Поискал в инете - нашел вариант намного проще:
Код
1
2
3
4
5
6
7
8
9
10
11
12
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 / 1024
    Set objSWbemServices = Nothing
End Function
 
Sub Test()
    MsgBox "Excel использует " & Round(GetMemUsage, 1) & " MB оперативки"
End Sub

в этом коде вместо WorkingSetSize можно поставить и другое свойство, - например, PagefileUsage

Насчет корректности выводимых значений можно почитать здесь:
http://www.programmersforum.ru/showthread.php?p=889806
 
Спасибо! Порядок занятой оперативной памяти определяет вполне себе. Проблема можно сказать решена. ... Однако возник еще вопрос)):

Вопрос не по теме, удален [МОДЕРАТОР]
Страницы: 1
Читают тему
Наверх
Loading...