Macros

¿Se pueden llamar a macros de Excel desde Access o viceversa? ¿Cómo?
Respuesta
1
Nedalos :
Vamos por partes.
*** paso 1 ****
En Excel abrí un libro nuevo (CTRL+U).
Ingresá en Visual Basic (Alt-F11)
Insertá un módulo (Insertar / modulo).
Y volcá allí el siguiente código :
Sub Mensaje()
MsgBox "Esta Macro se ejecuta desde Excel (archivo MacrodesdeExcel)"
End Sub
Volvé a Excel , grabá el archivo como "c:\MacrodesdeExcel.xls" y cerralo.
*******************
*** paso 2 ****
En Excel abrí un libro nuevo (CTRL+U).
Ingresá en Visual Basic (Alt-F11)
En Herramientas / Referencias ... marcá "Microsoft Access 8.0 Object Library" (si no estuviera marcado)
Insertá un módulo (Insertar / modulo).
Y volcá allí el siguiente código :
Sub EjecutoMacroAccess()
Dim MiAccess As New Access.Application
Dim Archivo As String
On Error Resume Next
Archivo = "C:\BaseAccess.MDB"
MiAccess.OpenCurrentDatabase (Archivo)
If Err > 0 Then
MsgBox "Error : " & Err & Chr(10) & Error()
End
End If
MiAccess.Run ("EjecutarMAcroExcel")
If Err > 0 Then
MsgBox "Error : " & Err & Chr(10) & Error()
End If
MiAccess.Quit
Set MiAccess = Nothing
End Sub
Volvé a Excel , grabá el archivo como "c:\EjecutaMacroAccess.xls" y cerralo.
*******************
*** paso 3 ****
Ingresá en Access.
Crea una nueva base de datos.
Grabala como "C:\BaseAccess.MDB".
Ingresa un nuevo módulo (Pestaña Modulo / ... Nuevo)
En Herramientas / Referencias ... marcá "Microsoft Excel 8.0 Object Library" (si no estuviera marcado)
Vuelca allí el siguiente código :
Function feme() As Boolean
feme = True
EjecutarMAcroExcel
End Function
Sub EjecutarMAcroExcel()
Dim MiExcel As New Excel.Application
Dim archivo As String
On Error Resume Next
MsgBox "Estoy en Access - BaseAccess"
archivo = "C:\MacrodesdeExcel.XLS"
MiExcel.Visible = True
MiExcel.Workbooks.Open (archivo)
If Err > 0 Then
MsgBox "Error : " & Err & Chr(10) & _
Error() & Chr(10) & "No encuentro archivo : " & archivo
End
End If
MiExcel.Run ("mensaje")
MiExcel.ActiveWindow.Close savechanges:=False
MiExcel.Quit
Set MiExcel = Nothing
End Sub
Graba y cierra el Access.
*******************
*** paso 4 ****
En excel abre el archivo
"c:\EjecutaMacroAccess.xls"
Ejecuta la macro : EjecutoMacroAccess
Esta macro, abre una nueva instancia de access, ejecuta allí, mediante el método Run el procedimiento "EjecutarMAcroExcel", que a su vez, abre una instancia de Excel y ejecuta la macro del primer archivo (paso 1).
También se puede crear en la base access una MACRO que ejecute (acción ejecutarCodigo) la función feme(), que en realidad llama al procedimiento.
Los trucos aquí están en la utilización de Objetos Excel. Application y Access. Application . Y luego el método RUN para ejecutar una subrutina.
Espero que sea lo que querías.
Suerte.
FJ
Muchas gracias por tu espléndida respuesta. La verdad es que finalmente logré realizarlo de otra forma que no recuerdo, pero aun así tu forma es mucho más elegante y eficaz. Mil gracias y un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas