Donde estoy los desarrolladores se han actualizado a Excel 2007, pero la mayoría de los usuarios no. Estoy construyendo una plantilla de hoja de cálculo (* .xlt) para un usuario que va a necesitar un código vba incluido, y me pregunto qué problemas me encontrarán al crear esto en 2007 en lugar de 2003. No tengo acceso a una máquina con Excel 2003 para probar, y me preocupa que este proyecto en particular se dirija a un desastre.Escritura de VBA en Excel 2007 para su uso en Excel 2003
Respuesta
El idioma de VBA no ha cambiado, pero hay objetos adicionales en Office 2007 que no están en Office 2003. Naturalmente, esto provocará un error de tiempo de ejecución cuando intente acceder a estos elementos en un entorno de 2003. ¿Qué le impide configurar una máquina virtual con Excel 2003 para desarrollarla?
No tengo acceso para hacer ningún trabajo de máquina virtual aquí. Si puedes dirigirme a una lista de objetos adicionales para que pueda evitarlos, estaría bien. –
billb2112 tiene razón. Existen numerosos cambios en Excel 2007 sobre excel 2003 que no son retrocompatibles. Si bien es posible que el idioma no haya cambiado, los objetos se han actualizado. Algunos han agregado propiedades adicionales, algunos funcionan de manera diferente y algunas funciones en Excel han cambiado.
Debe tener mucho cuidado de que el código funcione en Excel 2003. Sugeriría que billb2112 dijera que tiene una máquina virtual no solo para probar sino también para codificar. Hago todo mi desarrollo de Excel para clientes que solo tienen 2003 en una máquina 2003. Tenga en cuenta que si los usuarios tienen Excel 2002 o 2000, existen aún más diferencias a medida que retrocede y simplemente obtendrá errores de tiempo de ejecución en cualquier código que estas versiones anteriores no admitan.
actualización por desgracia jeffs answer no es del todo correcto. mientras que sí, el idioma vba no se ha actualizado, no es lo mismo en 2007 que en 2003. como en 2003 no es lo mismo que en 2002, etc. lo que sucedió es funciones extra y adicionales y argumentos para las funciones se han agregado. por ejemplo, hay más opciones en la función BUSCAR en Excel en 2003 que en 2002. por lo tanto, si registra una macro (la mejor manera de encontrar estos problemas) en 2003 y luego la ejecuta en 2002, tendrá errores de tiempo de ejecución relacionados con la nuevos argumentos que simplemente no funcionan en el editor VBA 2002. seguir el mismo proceso para las funciones que han cambiado en Excel 2007 y luego volver al 2003 para probarlo lo ayudará a localizar estos problemas. algunos ejemplos incluyen el formato condicional, colores (temas) y numerosas funciones nuevas de hoja de cálculo. jon peltier tiene el mejor consejo al respecto: desarrolle en la versión más antigua posible que usará el cliente/usuario. Virtual PC 2007 se puede descargar e instalar de forma gratuita. solo necesitará una copia con licencia de XP/Vista y la oficina para instalarla.
Lamentablemente, una máquina virtual no es una opción. Realmente necesito una lista de qué elementos no están disponibles en 2003. –
En lugar de depender de una lista probablemente incompleta de objetos y métodos que se han agregado a la biblioteca de objetos de Excel 2007, la mejor práctica (la más útil) es desarrollarla siempre en la versión más antigua de Excel que probablemente se utilizará para ejecutar el código.
Lamentablemente, no tengo esa opción. –
Esta es la mejor respuesta, ya que señala correctamente que cualquier lista probablemente estará al menos parcialmente incompleta y se relaciona muy bien con la respuesta de VM. –
solía desarrollar una gran cantidad de macros en 2003, lo que un POTA ,, cosas como Find, Dir y algunos otros no están disponibles o algo cambia. por lo tanto, se pueden esperar algunos errores, solía contar desde 65000 filas hasta la primera fila no vacía para contar las filas en las que trabajar ... ahora más filas significan más trabajo por hacer
no realmente, solo use la propiedad .End para la que está allí, para que no tenga que contar hasta el "final" de la última fila. –
Una diferencia que descubrí es que la subrutina debe tener una firma diferente para llamar desde un menú (en Excel 2003) que cuando se llama desde la cinta (en Excel 2007). Además, Excel 2003 no reconoce IRibbonControl y arroja errores de compilación.
Para trabajar hacia la compatibilidad de versiones cruzadas, utilizo un Argumento de compilación condicional y luego lo compruebo en las macros del preprocesador.
p. Ej.
#If USINGRIBBON Then
Public Sub CallFromRibbon(control As IRibbonControl)
#Else
Public Sub CallFromRibbon()
#End If
' Code here
End Sub
Esto significa que usted tiene que guardar una versión de su complemento con la bandera USINGRIBBON se pone a falso (por Excel2003) y otro con la bandera USINGRIBBON establecido en true (por Excel2007), pero esto es mucho más fácil que mantener dos bases de código completamente separadas.
- 1. VBA cambia Excel 2002 -> Excel 2007
- 2. Tratar de hacer Ofimática con Excel 2007, pero sigue usando Excel 2003
- 3. Cómo acceder a Checkbox desde VBA en Excel 2007
- 4. OnClick en Excel VBA
- 5. Excel (2007) VBA - .Fórmula con comillas en él
- 6. matriz en Excel VBA
- 7. Límite de tamaño de matriz VBA de Excel 2007
- 8. ¿Cómo llamo al cliente WCF desde Excel 2003 VBA?
- 9. Excel 2007 número PageSetup.FitToPagesWide
- 10. Es Excel VBA el mismo que VB.NET
- 11. Subcadena de Excel VBA
- 12. Uso de una matriz de rangos en VBA - Excel
- 13. Buenas prácticas de desarrollo de Excel VBA
- 14. Idioma manera independiente para conseguir "Mis documentos" carpeta en VBA Excel 2003
- 15. Guardar el archivo de Excel 2003
- 16. Excel VBA Colón
- 17. Excel VBA - xlDown
- 18. ¿Hay alguna manera de obtener IntelliSense completo para VBA en Access y Excel 2007?
- 19. Barra de progreso en VBA Excel
- 20. El formato XML de Excel 2003 no se abre automáticamente en Excel 2010 x64
- 21. Solicitud HTTPS POST usando VBA para Excel
- 22. Eliminación de imágenes con Excel VBA
- 23. ¿Cómo puedo congelar programáticamente la fila superior de una hoja de cálculo de Excel en Excel 2007 VBA?
- 24. CopyOrigin en Insertar en Excel VBA
- 25. Cómo utilizar VBA para hacer que una celda en Excel 2007 transparente
- 26. Documentación para macros VBA de Excel
- 27. Errores de manejo adecuado en VBA (Excel)
- 28. Filtrado de matrices 2D en Excel VBA
- 29. No puedo VBA escribir datos en celdas en Excel 2007/2010 dentro de una función
- 30. Excel 2003 - ¿Cómo construir mi propio XLA?
Convencí a mi jefe para que me permitiera compilar esto en una página ASP.Net en lugar de en una hoja de cálculo (se relacionará muy bien con el resto de nuestras aplicaciones de intranet), por lo que esta pregunta ahora es discutible desde mi punto de vista. Sin embargo, la información aquí puede ser útil para otra persona, así que la dejo activa. –
Realmente esta pregunta es bastante interesante, pero desafortunadamente debido a un sinfín de escenarios de casos de uso probablemente nunca la completemos. Realmente no hay excusa para no usar una VM con Office 2003 para desarrollo y prueba. –