Enlace con DLL Externa
Procedimiento VB6:
- Crear un proyecto con las librerías y funciones a emplear. Es importante asegurarse que está marcado el check de compatibilidad para COM (en Visual Studio).
- Generar la dll y registrarla.
- Llamarla desde el ERP de una forma similar a la expuesta:
Set lObj = CreateObject ("<NombreLibreria.NombreClase>")
lObj.<NombreProceso> <Parámetros>
Código ejemplo
Tenemos un proyecto con la siguiente clase:
Public Class Procesos
Public Sub mensaje()
MsgBox("MENSAJE A MOSTRAR")
End Sub
Public Sub crearPedido(ByVal gcn As Object, ByVal IdCliente As String, ByVal IdArticulo As String, ByVal Cantidad As Double)
Dim lPed = gcn.obj.dameobjStr("Pedido")
With lped
.propiedades("IdCliente") = IdCliente
.update()
Dim lLinea = lPed.objetos("Pedido_Lineas").add
llinea.propiedades("IdArticulo") = IdArticulo
llinea.propiedades("Cantidad") = Cantidad
llinea.update()
.show()
End With
End Sub
End Class
Public Class ConexionCargaLib
Private Shared pCn As Object
Public Property conexion() As Object
Get
Return pCn
End Get
Set(ByVal value As Object)
pCn = value
End Set
End Property
End ClassPara llamarla desde el ERP se realizaría de la siguiente forma:
Set lObj = CreateObject ("Prueba_ExternoNet.Procesos")
lObj.mensaje
lObj.crearPedido gcn, "00001", "0", 25En este ejemplo se mostraría un mensaje y se crearía un pedido.
Los pasos para generar una dll desde .net y poder utilizarla en el ERP son los siguientes:
Crear un Proyecto de Biblioteca de Clases en Visual Studio

En dicho Proyecto, marcar “Registrar para interoperatividad COM”


Una vez generada la dll de VS, copiarla en la carpeta donde está instalado el ERP, normalmente
C:\Program Files (x86)\AHORA Freeware ERP\Lib
Registar la librería de la siguiente forma:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe " C:\Program Files (x86)\AHORA Freeware ERP \lib\NOMBRELIBRERIA.dll" /tlb:NOMBRELIBRERIA.tlb /codebase
En nuestro ejemplo, el Código de la DLL de .NET es el siguiente
- Para llamarla desde el ERP sería de la siguiente manera:
Sub Main()
frmAux.Descargar 'ATENCIÓN: DEBE ESTAR SIEMPRE QUE NO SE MUESTRE EL FORMULARIO.
Set lPrueba = CreateObject("ClassLibrary1.Class1")
lPrueba.MensajeDLL
End SubY el resultado es el siguiente:

Procedimiento C#:
A partir de la versión 5.0 la referencia la realizamos siguiendo uno de los procedimientos que nos permite C#.
Para este ejemplo crearemos una librería externa (LibreriaExterna.dll) a la que referenciaremos uno de sus métodos.
Primero creamos la propia librería en sí de tipo .NET 6 (anteriormente .NET Core):

Para este ejemplo creamos sobre la propia librería una clase y un método que lo único que hará será devolvernos el parámetro que le pasemos con texto añadido: 
Importante recalcar que necesitaremos el nombre de la dll, nombre de la clase y nombre del método.
Compilamos para generar la dll y la dejamos en una ruta a la que tengamos permiso y acceso, para este ejemplo en la raíz de C:

El script que creamos para enlazarlo es el siguiente:
namespace AhoraScriptsVacia
{
public class Script_0 : AhoraOCX.AhoraBaseScript
{
public void Main()
{
string dllExterna = @"C:\LibreriaExterna\LibreriaExterna.dll";
var assembly = System.Reflection.Assembly.LoadFile(dllExterna);
var type = assembly.GetType("LibreriaExterna.ClaseExterna"); // namespace.clase
var obj = System.Activator.CreateInstance(type);
var metodo = type.GetMethod("DameTextoExterno");
var result = metodo.Invoke(obj, new object[] { "Texto Interno Parámetro" });
AhoraCore.VBA.Interaction.MsgBox(result.ToString());
}
}
}La ejecución de este script nos devuelve efectivamente el método externo con el parámetro que hemos llamado:

Tengan en cuenta que este es un procedimiento estándar de C# y este tiene todo tipo de posibilidades para conectar con cualquier tipo de DLL.