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!
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


0