Visual Basic para Aplicaciones - Problema llamada función DLL en Excel-VBA

Life is soft - evento anual de software empresarial
 
Vista:

Problema llamada función DLL en Excel-VBA

Publicado por usuariocccc (4 intervenciones) el 26/07/2018 21:28:53
Buenas tardes,

Tengo un problema con una dll que estoy intentando incluir en una macro para el calculo de componentes mecanicos.

La dll la proporciona un fabricante y sirve para seleccionar su componente de forma automática.

En el manual de la dll se proporciona el siguiente código:

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
'Function declaration
 
Public Declare PtrSafe Function StartJob Lib "C:\Users\Usuario\Desktop\Componentes\Baterias VRF\calcdll.dll" (ByRef p1 As Double, ByRef p2 As Variant, ByRef p3 As Double) As Boolean
Public Declare PtrSafe Function SetPricePath Lib "C:\Users\Usuario\Desktop\Componentes\Baterias VRF\calcdll.dll" (ByRef p1 As String)
 
Const NINPUTDATA = 100
Const NRESDATA = 100
Const NOPTIONSDATA = 1
Const P60 = 1
 
'where "c:\calcsoft\calcdll\debug\calcdll.dll" is the absolute path of calcdll.dll
 
'Usage
Function StartCalc_Clicked()
 
    Dim bErr As Boolean
    Dim aInputData(NINPUTDATA) As Double
    Dim aResult(NRESDATA) As Variant
    Dim aOptions(NOPTIONSDATA) As Variant
    Dim a As Boolean
 
    On Error GoTo StartCalc_exit
 
    'Collect data from input mask
    aInputData(0) = 1       'coil type P60
    aInputData(1) = 32      'inlet temperature 32°C
    aInputData(2) = 50      '50% R.H.
    aInputData(5) = 2000    'air volume 2000 Sm3/h
    aInputData(14) = 4      '4 Rows
    aInputData(15) = 10     '10 tubes per row
    aInputData(16) = 2      'fin pitch 2.0 mm
    aInputData(17) = 4      '4 circuits
    aInputData(18) = 500    'coil length 500 mm
    aInputData(26) = 7      'water inlet temp 7 °C
    aInputData(27) = 12     'water outlet temp 12 °C
 
    ' DLL DBM
    SetPricePath (".\\")
 
    a = StartJob(aInputData(0), aResult(0), aOptions(0))
 
    'show data results
    'ShowResult (aResult)
 
    MsgBox ("Selected coil" & aResult(29)) 'Simple result processing
    'Exit Sub
 
StartCalc_exit: MsgBox ("Errors during calculation")
    'Resume Next
 
End Function


Pero cuando se ejecuta y llama a la funcion "startjob" se produce un error, ya que no encuentra la dll y salta el error: "se ha producido el error '48' en tiempo de ejecución, no se encontro el archivo :"C:\Users\Usuario\Desktop\Componentes\Baterias VRF\calcdll.dll" "

Alguien me podría echar una mano????? he comprobado la ruta de la dll y es correcta
¿existe alguna otra manera de llamar a la dll?

Un saludo y muchas gracias de antemano por la ayuda
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
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema llamada función DLL en Excel-VBA

Publicado por Antoni Masana (498 intervenciones) el 27/07/2018 10:47:09
Esto tiene una trampa

1
C:\Users\Usuario\Desktop\Componentes\Baterias VRF\calcdll.dll

Y la trampa es ¿Quien es el Usuario?

Si lo pusiese en mi equipo la ruta seria
1
C:\Users\AMasana\Desktop\Componentes\Baterias VRF\calcdll.dll

Porque mi usuario de Windows es AMasana, otra cosa es que se ponga en un usuario generico que sirva para todos los usuarios y no existe un Usuario generico o se identifica con el nombre Usuario no lo va a encontrar.

Has una prueba, abre una ventana de MS-DOS y ejecuta el siguiente mensaje:

1
DIR %UserProfile%\Desktop\Componentes\Baterias VRF\calcdll.dll


Si esta correctamente instalado saldrá el fichero de lo contrario dirá que El sistema no puede encontrar el archivo especificado.

Saludos.
\\//
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema llamada función DLL en Excel-VBA

Publicado por usuariocccc (4 intervenciones) el 27/07/2018 14:49:42
Lo de usuario estaba bien puesto, lo unico que como subi el codigo general que estaba usando eso no estaba cambiado....

En el código que tengo dentro de mi macro en excel si que tengo bien puesta la ruta con la dirección correcta de mi equipo:

C:\Users\Javier\Desktop\Componentes\Baterias VRF\calcdll.dll

Así que el error de ahi no venía...

Cuando pruebo el mensaje que propones en la consola de comandos, si que aparece el archivo de la dll: "calcdll.dll" en la misma ruta a la que se referencia el comando de "Declare" de la macro....

¿Que otras causas podrían dar el error?

Muchas gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar