What are the differences between VBA 6.0 and VBA 7.0?
There's not a whole lot that has changed between VBA6 and VBA7. VBA7 was introduced to support 64-bit versions of both Office and Windows (see below on what those differences are). Here are the key changes:
64-bit support, primarily for APIcalls. This is both used to make your code work with your OS/Office version as well as others' (i.e. someone on Office 2003/WinXP)
If you are on a 64-bit version ofWindows, but are on a 32-bit versionof Office, you can declare API callslike below. .
#If Win64 Then Declare PtrSafe Function GetTickCount64 Lib "kernel32"() As LongLong#Else Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long#End If
If you are on a 64-bit version ofWindows, and are on a 64-bit versionof Office, you can declare API callslike:.
#If VBA7 Then Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As LongPtr #Else Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _ lpClassName As String, ByVal lpWindowName As String) As Long#End If
To support this, there are:
Three new keywords (2 data types and1 modifier):
LongPtr
,LongLong
andPtrSafe
One new function:
CLngLng()
(i.e.Int64)The new compilation constants as usedabove:
VBA7
andWin64
This piece on MSDN has more on the changes in VBA 7 for Office 2010: