![]() |
Calling customized DLL function fails
Hello everybody,
I have a problem with calling a DLL, writen in C++, from my Excel macro. The function calls work with 90% of all our users but there are two customers, where the functions are simply not executed. No error occurs and the function returnvalue is set to 0, meaning OK. They are both working with different machines, OS and excel versions, so I don't think it's a version problem. I made a special diagnosis version, showing messageboxes before and after the function call and also from the DLL functions. My customers get the messages from the excel macro but no messages from the dll. Nevertheless the returnvalue is changed from 5 to 0. There is no error message at all. Here is, how I call the function: Public Declare Function CalcPlanetCoordinates Lib "SemRaumTest4" (v() As Double, ByRef x As Double, ByRef y As Double, ByVal lpName As String) As Long Public Sub CalculatePlanets() Dim ret As Long Dim x As Double Dim y As Double Dim vals As Range ReDim v(0 To anzAttribs - 1) As Double For pl = 1 To anzPlanets 'Fill vector v() with double values from spreadsheet Set vals = Range(ActiveCell.Offset(1, pl), ActiveCell.Offset(anzAttribs, pl)) For at = 0 To anzAttribs - 1 v(at) = CDbl(vals.Range("A" & (at + 1)).Value) Next at 'x and y are passed by reference and after the function call contain the results! x = 99.99 y = 88.88 ret = 5 MsgBox "Start calling SemRaumTest4.Dll" & vbNewLine & _ "Parameter x = " & CStr(x) & vbNewLine & _ "Parameter y = " & CStr(y) & vbNewLine & _ "returnvalue = " & CStr(ret), vbOKOnly ret = CalcPlanetCoordinates(v, x, y, "") MsgBox "End calling SemRaumTest4.Dll" & vbNewLine & _ "Parameter x = " & CStr(x) & vbNewLine & _ "Parameter y = " & CStr(y) & vbNewLine & _ "returnvalue = " & CStr(ret), vbOKOnly If ret = 5 Then MsgBox "DLL function was not executed!", vbOKOnly ret = 0 End If 'Write results to spreadsheet If ret = 0 Then ActiveCell.Offset(21, pl).Value = x ActiveCell.Offset(22, pl).Value = y Dim name As String name = ActiveCell.Offset(0, pl).Text CreateNewPlanetPoint x, y, name, pl Else ActiveCell.Offset(21, pl).Value = "DLL-Fehler " & CStr(ret) ActiveCell.Offset(22, pl).Value = "DLL-Fehler " & CStr(ret) End If Next pl Application.ScreenUpdating = True End Sub Has somebody an idea, what is happening here? I am totaly clueless at the moment and would appreciate any help. |
All times are GMT +1. The time now is 02:29 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com