Visual Basic para Aplicaciones - No consigo ejecutar un DLL desde VBA cuyo parámetro de entrada es un vector

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 26 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

No consigo ejecutar un DLL desde VBA cuyo parámetro de entrada es un vector

Publicado por Kepa (1 intervención) el 27/11/2020 08:18:49
He creado un .dll usando la herramienta Library Compiler de Matlab. La función que he convertido en .dll tiene cono parametro de entrada un structure array con diferentes tipos de datos (números, texto, rutas). Esta función hace varios cálculos y escribe los resultados en un Excel, por lo que no devuelve ningun parámetro de salida.

Para escribir el código VBA estoy usando la guía "Integrate components using visualbasic application" que se puede encontrar en Mathworks,pero no consigo ejecutar el archivo dll. Mi intención es ejecutarlo al pulsar un botón pero cuando lo pulso no pasa nada. Ya he metido el archivo .dll en la libreria de VisualBasic pero no se ejecuta por lo que deduzco que el error está en la llamada. Mi intención es leer los datos para rellenar el array que será el parámetro de entrada a la función desde Excel.

Os dejo el código a ver si encontráis los errores. ¡Gracias!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Dim MCLUtil As Object
Dim bModuleInitialized As Boolean
 
Private Sub InitModule()
   If Not bModuleInitialized Then
      On Error GoTo Handle_Error
      If MCLUtil Is Nothing Then
         Set MCLUtil = CreateObject("MWComUtil.MWUtil")
      End If
      Call MCLUtil.MWInitApplication(Application)
      bModuleInitialized = True
      Exit Sub
Handle_Error:
      bModuleInitialized = False
   End If
End Sub
 
 
'CreateObject Function:
Function foo(ByVal inputscript As Variant) As Variant
       Dim aClass As Object
 
       On Error GoTo Handle_Error
       Set aClass = CreateObject("VictorCalc_main 1.0")
       ' (call some methods on aClass)
       Call aClass.foo(inputscript)
       Exit Function
Handle_Error:
   foo = Err.Description
End Function
 
 
 Sub Boton_Lanzar_Calculo()
 
   Dim inputscript() As Variant
 
   ReDim inputscript(11)
 
   inputscript(0) = Range("Sentido")
   inputscript(1) = Range("Paso_tiempo")
   inputscript(2) = Range("Paso_posición")
   inputscript(3) = Range("Ruta_Archivo_Input")
   inputscript(4) = Range("Nombre_archivo_output")
   inputscript(5) = Range("Flag_tabla_límite_aceleración")
   inputscript(6) = Range("Flag_tabla_rendimiento_motor")
   inputscript(7) = Range("Flag_guardar_Excel")
   inputscript(8) = Range("Tipo_resistencia_rodante")
   inputscript(9) = Range("Tipo_resistencia_por_pendiente")
   inputscript(10) = Range("Tipo_resistencia_por_curva")
 
  call foo (inputscript)
 
 End Sub
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