Posted: Sat Dec 17, 2005 1:49 pm Post subject: Acceso COM desde Excel
//**********************************************************
// Tipo : Implantación/Consultoria
// Titulo : Acceso COM desde Excel
// Codigo : TC0001
// Keywords : Configuracion, Consultoria, Programacion, Axapta 3.0
// Sub-keywords : COM, Excel, Macro
//
//**********************************************************
Hola a todos,
Este es un truco que no sabia exactamente si ponerlo en el apartado de consultoria o bien en desarrollo, al final me he decidido por consultoria debido a la utilidad que supone para muchos consultores/implantadores...
Bien, el tema consiste en realizar una extracción de datos de Axapta desde Excel usando la conectividad COM. En este truco se asume que tenemos una licencia COM y que este esta bien configurado. Explicar la configuración COM nos llevaria a otro truco entero (que no descarto publicar un dia de estos).
Al ataque !
Bien, lo primero es ejecutar el Excel
Ahora, como lo que vamos hacer es una macro pues ... nos vamos al editor de Visual basic que lleva el Excel
Para poder conectarnos a Axapta desde Excel, debemos activar la referencia desde Excel a Axapta para que el primero sepa como debe interactuar con el segundo. Una imagen vale más que mil palabras
Una vez aquí, y si tenemos bien instalado y configurado el COM connector de Axapta ... deberiamos poder localizar en la lista de componentes uno llamado "Axapta COM connector 1.2 Type library" o parecido.
Bien pues lo marcamos para poder usarlo en nuestra macro.
Una vez tengamos referenciado el Axapta COM connector desde Excel disponemos de una opción de mucha utilidad ...
El examinador de objetos
Aquí podemos "navegar" entre los distintos objetos de que disponemos, incluidos los que acabamos de referenciar de Axapta, y poder tener una idea de que metodos y propiedades nos ofrecen, asi como la sintaxis de cada uno de esos métodos.
Bien, ahora que Excel y Axapta ya se conocen ha llegado el momento de crear nuestra macro. Para ello nos basta con hacer click con el botón derecho del ratón en el arbol de proyectos de la izquierda y darle a "Insertar/Módulo" (ver imagen)
Ahora nos aparece una pantalla con un editor de código, pues bien, aquí debemos escribir esto (copiar y pegar por supuesto )
VisualBASIC:
Sub GetClientes()
Dim Axapta As Object
Dim CustTable As IAxaptaRecord
Dim Worksheets As Object
Dim CurWorkSheet As Object
Dim Cells As Object
Dim Lin AsInteger Dim Cell As Range
Set Axapta = CreateObject("AxaptaCOMConnector.Axapta2")
Axapta.Logon"admin", "", "", ""
Set CustTable = Axapta.CreateRecord("CustTable") Set Worksheets = Application.Worksheets Set CurWorkSheet = Worksheets.Item(1) Set Cells = CurWorkSheet.Cells
Lin = 1
While CustTable.Next() Set Cell = Cells.Item(Lin, 1)
Cell.Value = CustTable.field("AccountNum") Set Cell = Cells.Item(Lin, 2)
Cell.Value = CustTable.field("Name")
Lin = Lin + 1 Wend
Axapta.Logoff Set Axapta = Nothing
EndSub
Podeis apreciar que en la parte ...
VisualBASIC:
Axapta.Logon"admin", "", "", ""
Estamos asumiendo que vamos a logarnos con el usuario admin y el password de este está en blanco, supongo que debereis cambiar esto
Como podreis comprobar si ejecutais esta macro, lo que hace es conectarse a Axapta y traerse el codigo y nombre de todos los clientes mediante un pequeño bucle por la tabla CustTable.
Bien, visto así ... parece que no tiene mucha utilidad esta macro pero ... si os quedais con la idea de lo facil que es conectarse a Axapta desde cualquier aplicación Office y la cantidad de clases y componentes de que disponemos para interactuar con Axapta desde "fuera" ... os dareis cuenta de la potencia y posibilidades que esto os puede dar.
Fijaros en el bucle ...
VisualBASIC:
While CustTable.Next() Set Cell = Cells.Item(Lin, 1)
Cell.Value = CustTable.field("AccountNum") Set Cell = Cells.Item(Lin, 2)
Cell.Value = CustTable.field("Name")
Lin = Lin + 1 Wend
Sencillamente estamos cogiendo los campos AccountNum y Name, si quereis añadir más pues ... vosotros mismos
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
Axapta y Dynamics Ax son marcas registradas de Microsoft corporation. Todos los logos y marcas son propiedad de sus respectivos propietarios. Excepto trucosAx.com que este si que es mio :-). (c) 2005 by Manel Querol (Mkz) TrucosAx.com no pertenece ni está asociada a Microsoft corporation. Los fragmentos de código y proyectos importables que aquí se muestren están realizados sobre bancos de pruebas. No nos hacemos responsables de cualquier daño o pérdida de datos que se pudiera originar del hecho de instalar alguno de estos ejemplos en un sistema productivo. Es responsabilidad del usuario ser consciente del impacto que puede ocasionar en sus aplicaciones el uso del código que de aquí extraiga.