modo importar datos compatibilidad como archivo abrir access-vba ms-access-2010 ms-access-2013

access-vba - compatibilidad - importar datos de excel a access vba



Admite múltiples versiones de Excel para la automatización desde una aplicación de Access (1)

Tengo una aplicación de acceso, desarrollada en Access 2013 en env multiusuario, usa automatización de Excel para exportar y formatear un archivo de Excel.

Las referencias normales de Office / Excel 2013 (15.0) se han realizado y todas funcionan bien en las máquinas de Office 2013. No funciona bien en las máquinas 2010.

Utilizando una máquina 2010, reemplacé las 15.0 referencias con 14.0 referencias, y la aplicación es feliz en las máquinas 2010 y 2013. Tras la próxima edición / actualización en mi máquina 2013, vuelven las 15.0 referencias.

¿Alguna sugerencia para desarrollar / operar de manera más conveniente en este entorno de múltiples versiones?

¡Gracias!


La solución general a este problema es utilizar el enlace tardío . Las desventajas del encuadernado tardío son

  • Dim xlApp As Object significa que no obtenemos IntelliSense para xlApp , y
  • Las constantes relacionadas como xlEdgeTop no se definen sin la referencia asociada

Estos problemas se pueden mitigar mediante el uso de compilación condicional en el proyecto de VBA. Para el desarrollo, agregue la Referencia requerida al proyecto y defina un argumento de compilación condicional

que puedes usar en tu código como este

Option Compare Database Option Explicit Public Sub WorkWithExcel() #If LateBinding Then Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") #Else Dim xlApp As Excel.Application Set xlApp = New Excel.Application #End If Debug.Print xlEdgeTop End Sub

Para evitar el desorden, me inclinaría a mantener las constantes en un Módulo por separado como este

Option Compare Database Option Explicit #If LateBinding Then Public Const xlEdgeTop = 8 #End If

Cuando se completa el ajuste del código, elimine la referencia, establezca el argumento de LateBinding en "True" ( LateBinding = -1 ) y compile el proyecto. Agregue las constantes que haya omitido (siempre parece haber una o dos) y cuando se compile sin la referencia, debe implementarlas.

Para la próxima sesión de desarrollo, establezca LateBinding en "False" ( LateBinding = 0 ) y vuelva a agregar la referencia en.