Ejecutar macros de Excel desde Access

¿Se puede escribir de algún modo en una base de datos de access
que se ejecute una macro de excel (realizo unos cálculos en excel de
cuyo proceso sólo me interesa ver el resultado)?
Espero que el
NO
00
DO
Todavía funcione...

1 respuesta

Respuesta
1
Si que se puede
No conozco eso que dices que te gustaría que funcionase todavía
Salud
Ah, que me olvidaba del código: requiere
-El archivo a abrir (ruta completa)
-Nombre de macro a ejecutar
-Fila y columna de la celda a ver
Por ejemplo :
EjecMacExcel "D:AccessSoporteTodoExpDocumento de Excel1", "macro1", 3, 2
----
Function EjecMacExcel(path As String, macro As String, fil as , col)
Dim oExcel As Excel.Application
Set oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.Open path
oExcel.Run macro
MsgBox oExcel.Cells(fil, col)
oExcel.ActiveWorkbook.Close savechanges:=False
oExcel.Quit
Set oExcel = Nothing
End Function
----
Aquí se supone que excel no esta abierto en ninguna otra ventana.
Pues si, en el modulo en herramientas, referencias, agrega la referencia al Modelo de Objetos de Microsoft Excel.
Yo soy de Huelva, se que el nomadejado es parte del escudo de sevilla (frase histórica de algún rey en tiempos de la reconquista, creo) pero así y todo no sabia a que querías referirte exactamente, bueno da igual
Me aparece un error de compilación en la línea de "Dim oExcel As Excel.Application" dice que "No se ha definido el tipo definido por el usuario". Reescribiendo la línea una vez escrito "As" el módulo propone diferentes opciones y sólo me aparece el "application", pero no me aparece "Excel". ¿Tengo qué dar de alta el "tipo"? ¿Cómo se hace?
El "NO" "oo" "DO" corresponde a una campaña publicitaria que vi una vez en Sevilla y que me costó interpretar...
Cordialment,
Midma
Ejecutar el código ya funciona, o eso creo, ya que aparece el reloj de arena un rato y, después, el cursor. Si compruebo la hoja de excel ésta no ha sufrido ninguna variación. ¿Cómo puedo comprobar que se ha ejecutado la macro de Excel? La línea de Msgbox da un problema de depuración y la he borrado y también he cambiado el "savechanges:=False por True".
La frase histórica era debido a la respuesta que me distes por el email cuando no me podía conectar a la hoja de "todoexpertos"... y no sabía si me "habían dejado" tus respuestas. Tus respuestas me son de mucha utilidad.
Cordialment,
Midma
Savechanges=True es lo suyo, si es que además de mostrar el resultado en access quieres dejarlo guardado también en excel, como para verificar que se ejecutó el macro, claro.
A efectos de depuración puedes hacer
oexcel.visible = true
De forma que durante la pausa que hace el msgbox que te presenta el resultado en access puedes cambiar de ventanas para verlo
Por fin lo pillo (lo del nomadejado je je).
Salud.
Si no te importa vuelve a poner el msgbox para mi curiosidad de que error te daba en concreto a ver si también lo arreglamos.
(Y si es que al final no lo quieres, cuando este arreglado ya lo vuelves a quitar definitivamente)
Con "se ha producido el error '13' en tiempo de ejecución: no coinciden los tipos" y al Depurar señala en amarillo la línea de Msgbox con la información oExcel.Cells(fil,col)=<no coinciden los tipos>. ¿puede ser debido a que las variables fil as string, col as string están mal definidas?
Ahora me guarda la información poniendo solamente True sin "savechanges".
También me parece estupendo poder ver el excel. ¿Hay alguna manera de que dure la visión hasta que diga "ok"(que aparezca un botón o algo parecido al mismo tiempo)?
Cordialment
Midma
En mi código las variables fil y col no son as string sino que son as variant (por no estar definidas 'as nada'.)
En las variables variant access almacena cualquier tipo de dato sin entrar en conflicto con Option Explicit.
Parece poco razonable querer forzar el declararlas as string, cuando se quieren referir a las coordenadas de una celda cell, expresadas en numero de fila y numero de columna.
Parece lógico que tal cambio produzca un error 13.
En caso de no querer (no se para que) que sean Variant, Probar con integer o long.
Repito por tercera vez que el msgbox surte el efecto deseado.
Salud y que aproveche.
Hola soria4xse,
tienes razón, el msgbox actúa como indicaste, lo único que en mi poco conocimiento del tema y al ver que solamente habías puesto en el código "fil as" se me ocurrió poner "string" sin saber que diferencia una string(cadena) de una variant(variante). Corregidas las declaraciones funciona (aunque de vez en cuando existe algún error que dice que el libro de excel está bloqueado para modificarlo). Creo que le sacaré mucho provecho a estas líneas de vínculo con excel. Te "dejo" por ahora. Cuento contigo para más dudas y aclaraciones.
Salut
Midma

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas