sofas - Acceso de apertura desde Excel VBA
sofas fama precios (4)
Editar: la respuesta a esta pregunta se puede encontrar en los comentarios de la respuesta aceptada.
Estoy intentando abrir una base de datos de Access desde un clic de botón dentro de mi archivo de Excel. Actualmente tengo este código:
Private Sub bttnToAccess_Click()
Dim db As Access.Application
Set db = New Access.Application
db.Application.Visible = True
db.OpenCurrentDatabase "C:/Users/wcarrico/Desktop/wcarrico-CapstoneFinalSubmission.accdb"
End Sub
Esto parece funcionar brevemente y luego Access se cierra casi de inmediato. Si es importante, el archivo de Access tiene una macro AutoExec que se ejecuta a través de algunas pruebas en abierto.
No intente abrir la aplicación de acceso; simplemente cree un objeto de conexión utilizando una de las tecnologías de acceso a datos: - OLE-DB o - ODBC.
Google "Cadenas de conexión ODBC" o "Cadenas de conexión OLE-DB" para obtener detalles dependiendo de su configuración particular (y tipo de archivo Access).
Probablemente ADODB es la biblioteca actual más fácil de usar para su acceso a datos.
Actualización: Intente importar los datos de Access y luego utilice el asistente Datos -> Desde acceso . Yu siempre puede usar la función de recodificación de Macro para generar automáticamente algún código de VBA para usted, que creará cierta infraestructura para usted; Lo uso regularmente cuando exploro nuevas porciones del modelo de objetos VBA.
Actualización - Resolución final del problema, de los comentarios a continuación
Eso puede ser porque la variable está fuera del alcance; mover la declaración de db
fuera de la función, al nivel de módulo
El código inició Access creando una instancia de aplicación asignada a una variable de objeto. Al final del procedimiento, la variable salió del alcance, por lo que se cerró el acceso.
Usted aceptó una respuesta para usar una variable de nivel de módulo para la instancia de aplicación de Access. En ese caso, Access sigue ejecutándose después de que finaliza el procedimiento. Sin embargo, si el usuario sale de Excel, Access también se cerrará.
Si el objetivo es iniciar Access y dejarlo en ejecución hasta que el usuario decida cerrarlo, simplemente inicie Access directamente sin asignar la instancia de la aplicación a una variable de objeto ( Set db = New Access.Application
). Esa variable db
sería útil si su código de Excel lo necesita para otros fines. Sin embargo, en realidad solo se usa para abrir el archivo db.
Puede usar el método Run
de WScript.Shell
para abrir su archivo db en una sesión de Access.
Private Sub bttnToAccess_Click()
Const cstrDbFile As String = "C:/Users/wcarrico/Desktop/wcarrico-CapstoneFinalSubmission.accdb"
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell.Run cstrDbFile
Set objShell = Nothing
End Sub
Sé que este es un hilo viejo, pero obtendrá este error en Excel VBA si está intentando abrir una base de datos de Access, pero no tiene dos referencias específicas en las que se haya hecho clic. (Herramientas, Referencias en la pantalla del Editor de VBA). Debe hacer clic en ''Biblioteca de objetos de Microsoft Access 15.0'' y ''Biblioteca de objetos de datos de Microsoft ActiveX 6.1''.
Eliminar la New
declaración y luego funciona