Access - Ejecutar macro de access desde vba excel

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

Ejecutar macro de access desde vba excel

Publicado por Miguel (56 intervenciones) el 02/12/2023 17:50:04
Hola a todos.
Tengo una gran duda y ojala me puedan ayudar.
Tengo una BD con ciertas consultas que leen diversas tablas.
Desde excel me enlazo a access y ejecuto las consultas que deseo sin inconvenientes, sin embargo no se ejecuta una consuta de creación de tabla . Al parecer se activa la advertencia que hay dentro de access que confirma si desea realmente crear una tabla, etc, etc

Para ello he decidido crear una macro en access donde hago 3 pasos: desactivo las alertas, ejecuto la consulta y luego activo las alertas, sin embargo, no se como ejecuto una macro de access desde mi vba de excel.

Alguien me puede ayudar y decirme como lo puedo hacer.

Gracias a a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejecutar macro de access desde vba excel

Publicado por Anonimo (3316 intervenciones) el 02/12/2023 18:19:35
Si la acción se necesita (o se puede ejecutar) al abrir la aplicación, una opción sencilla seria llamarla a la macro 'Autoexec'.
Si la macro ya existe o se esta utilizando, basta añadirle la acción 'ejecutar macro' y la macro a ejecutar: la que crea la consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

Ejecutar macro de access desde vba excel

Publicado por Miguel (56 intervenciones) el 03/12/2023 15:04:28
Hola, muchas gracias por tu pronta respuesta.
Inicialmente no entendía tu solución pero luego la entendí mejor y y si tiene mucho sentido, sin embargo, me queda la duda:
Se ejecuta una autoexec aun cuando no abres la base de datos?
La base de datos origen o donde están las tabllas físicas o vinculadas y las consultas a la que accedo, no se abre digamos "de manera física o directa". Esta alli en la misma carpeta que el archivo excel y lo que ejecuto o abro es solo el archivo excel y desde alli es donde ejecuto las consultas,

Aún así, se ejecutaría un autoexec en la base de datos access?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar macro de access desde vba excel

Publicado por Yamil Bracho (1 intervención) el 03/12/2023 15:23:00
Autoexec se ejecuta solo cuando abres la BD.
Tendrias que hacer una referencia a la Bibliotecha de Objetos de Access y usar Docmd.RunMacro. Pro ejemplo :

Sub accessMacro()
Dim appAccess

Set appAccess = CreateObject("Access.Application")

appAccess.OpenCurrentDatabase "C:\blah.mdb"

appAccess.Visible = True

appAccess.DoCmd.RunMacro "TuMacro"

appAccess.CloseCurrentDatabase
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

Ejecutar macro de access desde vba excel

Publicado por Miguel (56 intervenciones) el 03/12/2023 16:06:52
Gracias por tu inteeres y ayuda

Para fines de ejecutar una consulta normal y que me traiga el resultado de la misma, utilizo el siguiente código.
Donde debería poner: appAccess.DoCmd.RunMacro "TuMacro"

Intenté con : recSet.DoCmd.RunMacro "TuMacro" cnn y también recSet.DoCmd.RunMacro "TuMacro" pero en ambos casos da error

Disculpa mi desconocimiento del tema,

Dim cnn As New ADODB.Connection
Dim recSet As New ADODB.Recordset
Dim strSQL, strTabla As String

cnn.Provider = "Microsoft.Jet.OLEDB.4.0" ' Esto es para access 2003 (.mdb)
cnn.Properties("Data Source") = "C:\VtsyPrd.mdb"
cnn.Properties("Jet OLEDB:Database Password") = "" ' En caso que la BD tenga contraseña, se debe poner aqui
cnn.Open

' Asigna la consulta a ejecutar: Selecciona ultimas ventas
strTabla = "[Selecciona ultimas ventas]"
strSQL = "SELECT * FROM " & strTabla & " "
recSet.Open strSQL, cnn

'
' resto de código
'


End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar macro de access desde vba excel

Publicado por Anonimo (3316 intervenciones) el 03/12/2023 19:13:16
Si no se abre la aplicación (se accede de forma remota) Access solo es un 'saco de datos', por lo que no se ejecutará la macro y no creo que se ejecute ninguna macro o crear crear/ejecutar consultas.

Nada impide que se abra de forma oculta/minimizada la aplicación, que se ejecuten las consultas y/o acciones necesarias y tras ello (detectando el final de los procesos o temporizando) cerrar la aplicación con los datos ya actualizados y preparados para recibir las peticiones externas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar macro de access desde vba excel

Publicado por Eduardo Pérez Fernández (317 intervenciones) el 03/12/2023 21:22:33
Si logra conectarse nada le impide crear la tabla con una instrucción SQL, algo como cnn.Executre "CREATE TABLE". Lo invito a ver mis videos sobre CRUD CON ADO Y MODULOS DE CLASE EN ACCESS..

Le dejo el LINK https://youtu.be/NBDr0obIGW8
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

Ejecutar macro de access desde vba excel

Publicado por Miguel (56 intervenciones) el 04/12/2023 02:21:11
Con la rutina que envie en parte de arriba se enlaza muy bien a las consultas y me trae los resultados, sin embargo, no se como "enlazar" o como llamar a una macro de access.

¿Por que hice una macro y no una consulta simple?
porque esa consulta que está dentro de la macro crea un tabla temporal con todos mis datos a evaluar. Y antes de que la ejecute coloco las advertencias en false, ejecuto la consulta y luego otra vez advertencias en true.
Creo que no se ejecuta la macro precisamente porque si la hago consulta sola, pide o advierte si se desea crear esa tabla, y esa parte del proceso debe ser transparente para usuario final.

ese es el punto de quiebre en mi proceso que no se como llamar a una macro con mi código
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar