Application.MemoryFreeApplication.MemoryTotalApplication.MemoryUsed
Mas na versão do MS Excel 2007 elas disapareceram. Mas nem tudo está perdido, a função GlobalMemoryStatus pode ser usada, e está disponível como função API do Windows:
Iniciar o Microsoft Excel e crie uma nova pasta de trabalho.No menu Ferramentas , aponte para macro e em seguida, clique em Editor do Visual Basic (ou pressione ALT+F11).No menu Inserir , clique em módulo .Na folha de módulo, digite o seguinte código:
Option ExplicitType SYSTEM_INFOdwOemID As LongdwPageSize As LonglpMinimumApplicationAddress As LonglpMaximumApplicationAddress As LongdwActiveProcessorMask As LongdwNumberOrfProcessors As LongdwProcessorType As LongdwAllocationGranularity As LongdwReserved As LongEnd Type
Type OSVERSIONINFOdwOSVersionInfoSize As LongdwMajorVersion As LongdwMinorVersion As LongdwBuildNumber As LongdwPlatformId As LongszCSDVersion As String * 128End TypeType MEMORYSTATUSdwLength As LongdwMemoryLoad As LongdwTotalPhys As LongdwAvailPhys As LongdwTotalPageFile As LongdwAvailPageFile As LongdwTotalVirtual As LongdwAvailVirtual As LongEnd Type
'The following three Declare lines must be each entered on a single'line.
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _(LpVersionInformation As OSVERSIONINFO) As LongDeclare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As _MEMORYSTATUS)Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As _SYSTEM_INFO)
Public Const PROCESSOR_INTEL_386 = 386Public Const PROCESSOR_INTEL_486 = 486Public Const PROCESSOR_INTEL_PENTIUM = 586Public Const PROCESSOR_MIPS_R4000 = 4000Public Const PROCESSOR_ALPHA_21064 = 21064
Sub SystemInformation()Dim msg As String ' Status information.Dim NewLine As String ' New-line.Dim ret As Integer ' OS InformationDim ver_major As Integer ' OS VersionDim ver_minor As Integer ' Minor Os VersionDim Build As Long ' OS Build
NewLine = Chr(13) + Chr(10) ' New-line.' Get operating system and version.Dim verinfo As OSVERSIONINFOverinfo.dwOSVersionInfoSize = Len(verinfo)ret = GetVersionEx(verinfo)If ret = 0 ThenMsgBox "Error Getting Version Information"EndEnd If
Select Case verinfo.dwPlatformIdCase 0msg = msg + "Windows 32s "Case 1msg = msg + "Windows 95/98 "Case 2msg = msg + "Windows NT/2000 "End Selectver_major = verinfo.dwMajorVersionver_minor = verinfo.dwMinorVersionBuild = verinfo.dwBuildNumbermsg = msg & ver_major & "." & ver_minormsg = msg & " (Build " & Build & ")" & NewLine & NewLine' Get CPU type and operating mode.Dim sysinfo As SYSTEM_INFOGetSystemInfo sysinfomsg = msg + "CPU: "Select Case sysinfo.dwProcessorTypeCase PROCESSOR_INTEL_386msg = msg + "Intel 386" + NewLineCase PROCESSOR_INTEL_486msg = msg + "Intel 486" + NewLineCase PROCESSOR_INTEL_PENTIUMmsg = msg + "Intel Pentium" + NewLineCase PROCESSOR_MIPS_R4000msg = msg + "MIPS R4000" + NewLineCase PROCESSOR_ALPHA_21064msg = msg + "DEC Alpha 21064" + NewLineCase Elsemsg = msg + "(unknown)" + NewLineEnd Select
msg = msg + NewLine
' Get free memory.Dim memsts As MEMORYSTATUSDim memory As LongGlobalMemoryStatus memstsmemory = memsts.dwTotalPhysmsg = msg + "Total Physical Memory: "msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLinememory = memsts.dwAvailPhysmsg = msg + "Available Physical Memory: "msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLinememory = memsts.dwTotalVirtualmsg = msg + "Total Virtual Memory: "msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLinememory = memsts.dwAvailVirtualmsg = msg + "Available Virtual Memory: "msg = msg + Format(memory \ 1024, "###,###,###") + "K" + NewLineMsgBox msg, vbOKOnly, "System Info"End SubNo menu Ferramentas , aponte para macro e, em seguida, clique em macros .Clique em SystemInformation e, em seguida, clique em Executar .
Reference::Gerrit-Jan Linker
212536 OFF2000: Como executar o código de exemplo de artigos da Knowledge Base161151 COMO: Obter informações de status do Windows por meio de chamadas de API189249 COMO: Determinar qual versão do Windows de 32 bits está sendo usado
Tags: VBA, Excel, Memory, memória, Excel 2007, API, Windows,