Me di cuenta de que Office 2010 viene con Visual Basic para Aplicaciones 7.0. Sin embargo, parece que no puedo encontrar mucha documentación sobre los cambios que se hicieron. ¿Alguien tiene un resumen de los cambios o cualquier recurso que describa las diferencias?¿Cuáles son las diferencias entre VBA 6.0 y VBA 7.0?
Respuesta
No hay mucho que haya cambiado entre VBA6 y VBA7. VBA7 se introdujo para admitir las versiones de 64 bits de Office y Windows (consulte a continuación cuáles son esas diferencias). Estos son los principales cambios:
apoyo64-bits, principalmente para llamadas de API . Esto es tanto utiliza para hacer su trabajo de código con su sistema operativo/versión de Office, así como los demás (es decir, alguien en la oficina 2003/WinXP)
Si se encuentra en una versión de 64 bits de Windows, pero están en una versión de 32 bits de Office, puede declarar llamadas a API como 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 se encuentra en una versión de 64 bits de de Windows, y están en una versión de 64 bits de oficina, 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 palabras clave nuevas (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 utiliza anterior:
VBA7
yWin64
VBA7 es compatible con las versiones de Office de 64 bits.
Esta pieza en MSDN tiene más información sobre los cambios en VBA 7 para Office 2010:
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – Marco13
Usted es, por supuesto, correcto, pero recuerde que esta fue una respuesta de los primeros días de SO, antes de que tales convenciones estuvieran realmente codificadas. Piensa en la respuesta aceptada y esta prácticamente cubre las cosas :) – Lunatik
Este comentario se insertó automáticamente durante una revisión (las respuestas solo-enlace tienden a terminar en la cola de revisión de baja calidad) – Marco13
T aquí hay otros cambios también ... Tengo usuarios en el campo informan que el código que funcionaba correctamente en 2007 ya no funciona y muestra errores.
ejemplo, esto funciona en VBA6 (Excel 2007)
PRINT STRING$(80,"=")
mynewdata = MID$(mydata, 15,4)
Se imprime una línea hecha de "=" personajes como un descanso visual, luego mira a misdatos, salta sobre caracteres y obtiene de ellos, el resultado se almacena en mynewdata. Falla en VBA7 (Excel 2010).
Lo que encontrar una solución potencial ...
PRINT VBA.STRING$(80,"=")
mynewdata = VBA.MID$(mydata, 15,4)
O
PRINT VBA.STRING(80,"=")
mynewdata = VBA.MID(mydata, 15,4)
Una lista completa de los cambios todavía sería útil ... y/o un conversor de archivos.
- 1. ¿Cuáles son las diferencias entre $ {} y # {}?
- 2. ¿Cuáles son las diferencias entre VB.NET y las versiones anteriores de VB?
- 3. ¿Cuáles son las diferencias entre utilizar la palabra clave New y llamar a CreateObject en Excel VBA?
- 4. ¿Cuáles son las diferencias y similitudes entre MVC y MVVM?
- 5. VBA: Diferencia entre y y +
- 6. ¿Cuáles son las diferencias entre PHP y Java?
- 7. ¿Cuáles son las diferencias entre osql, isql y sqlcmd?
- 8. ¿Cuáles son las diferencias entre "=" y "<-" en R?
- 9. ¿Cuáles son las diferencias entre Flash Professional y Flash Builder?
- 10. ¿Cuáles son las diferencias entre LLVM y bytecode java?
- 11. ¿Cuáles son las diferencias entre usar `rails server` y` rackup`?
- 12. ¿Cuáles son las diferencias entre RedrawWindow y UpdateWindow en Win32?
- 13. ¿cuáles son las diferencias exactas entre jsch ChannelExec y ChannelShell?
- 14. ¿Cuáles son las diferencias entre JSP y Facelets?
- 15. ¿Cuáles son las diferencias entre ConcurrentQueue y BlockingCollection en .Net?
- 16. ¿Cuáles son las diferencias entre LinFu.DynamicProxy y Castle.DynamicProxy?
- 17. ¿Cuáles son las diferencias fundamentales entre OSGi y Java EE?
- 18. ¿Cuáles son las diferencias entre TFS, SVN y GIT?
- 19. ¿Cuáles son las principales diferencias entre EnhancedPatternLayout y PatternLayout?
- 20. ¿Cuáles son las diferencias entre INSERT y UPDATE en MySQL?
- 21. ¿Cuáles son las diferencias entre NSURLConnection y ASI-HTTP-Request?
- 22. ¿Cuáles son las principales diferencias entre fwrite y write?
- 23. ¿Cuáles son las diferencias entre JSP, PHP, HTML5 y javascript?
- 24. ¿Cuáles son las diferencias prácticas entre formularios especiales y macros?
- 25. ¿Cuáles son las diferencias entre los modelos CSS y Latex?
- 26. ¿Cuáles son las diferencias entre MOQ y AutoFixture?
- 27. ¿Cuáles son las diferencias entre Vanilla Perl y Strawberry Perl?
- 28. ¿Cuáles son las diferencias entre el objeto JSON y JavaScript?
- 29. ¿Cuáles son las diferencias reales entre Zend Framework y Django?
- 30. ¿Cuáles son las diferencias entre free, dealloc, release y autorelease?
@Todd Solo quiero señalar que LongPtr es un alias y apunta al tipo de datos correcto al usar 64 bits o 32 bits de palabra. Así que LongPtr apuntaría a LongLong en la oficina de 64 bits y Long en la oficina de 32 bits. La declaración a continuación funcionaría en oficinas de 32 y 64 bits. Función Declare PtrSafe GetTickCount Lib "kernel32"() Como LongPtr – Syler
@Syler, ese es un buen punto. Aún no lo he probado, pero tiene sentido lo que dijiste. –