Isabel, miembro de nuestro equipo, nos hizo el favor de escribir esta reseña porque domina a la perfección el tema.
Solución:
No hay mucho que haya cambiado entre VBA6 y VBA7. VBA7 se introdujo para admitir versiones de 64 bits de Office y Windows (consulte a continuación cuáles son esas diferencias). Aquí están los key cambios:
-
Compatibilidad con 64 bits, principalmente para llamadas API. Esto se usa para hacer que su código funcione con su versión de OS/Office y con la de otros (es decir, alguien en Office 2003/WinXP)
-
Si tiene una versión de Windows de 64 bits, pero tiene una versión de Office de 32 bits, puede declarar llamadas a la API como se muestra a continuación. .
#If Win64 Then Declare PtrSafe Function GetTickCount64 Lib "kernel32"() As LongLong #Else Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long #End If
-
Si tiene una versión de Windows de 64 bits, y están en una versión de Office de 64 bits, puede declarar llamadas API como: .
#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
-
-
Para apoyar esto, hay:
-
Tres nuevas palabras clave (2 tipos de datos y 1 modificador):
LongPtr
,LongLong
yPtrSafe
-
Una nueva función:
CLngLng()
(es decir, Int64) -
Las nuevas constantes de compilación como se usa arriba:
VBA7
yWin64
-
Esta pieza en MSDN tiene más información sobre los cambios en VBA 7 para Office 2010:
http://msdn.microsoft.com/en-us/library/ee691831(loband).aspx#odc_office2010_Compatibility32bit64bit_IntroducingVBA7CodeBase
VBA7 es compatible con las versiones de Office de 64 bits.