Thema Datum  Von Nutzer Rating
Antwort
Rot Excel 2003 .dll in Excel 2010 nicht verwendbar?
14.07.2014 17:00:22 B.Liedtke
NotSolved

Ansicht des Beitrags:
Von:
B.Liedtke
Datum:
14.07.2014 17:00:22
Views:
1610
Rating: Antwort:
  Ja
Thema:
Excel 2003 .dll in Excel 2010 nicht verwendbar?

Moin!

Ich habe folgendes Problem:

Bin von Excel 2003 auf Excel 2010 umgestiegen.

Für Excel 2003 habe ich ein AddIn, das Funktionen aus einer C++ .dll in vba einbindet um diese als Worksheet-Funktionen verwenden zu können.

Unter Excel 2003 (Windows XP/ SP3) funktioniert das alles einwandfrei.

Unter Excel 2010 (32 bit Office/ Windows 7 Enterprise 64 bit) liefert die Worksheet-Funktion nur #WERT zurück.

Versuche ich die Funktion aus der DLL direkt aus VBA anzusprechen, kriege ich die Fehlermeldung, dass die .dll-Datei nicht gefunden wurde, obwohl der Pfad Explizit im declare-Statement drin steht und die Datei bei sonstigen aufrufen über z.B. dir(Pfad) auch vorhanden ist.

Als Minimalbeispiel:

.dll enthält Funktion: DLL_qx(Int a, String s, String s2, Int b, Int c)

Im VBA Code:

 


Private Declare Function DLL_qx Lib "C:\MeineDll.dll" _
   (ByVal a As Integer, ByVal s As String, ByVal s2 As String, ByVal b As Integer, ByVal c As Integer) As Double

Public function qx ( Int a, String s, String s2, int b, int c) as Double

qx=DLL_qx(a, s, s2, b, c)

End function

sub test()

a = dll_qx(27, "M", "1994", 0, 0)
Debug.Print a
End sub

Liefert nur  "Datei nicht gefunden"

Verschiedene online vorgeschlagene Lösungen haben nicht funktioniert:

- Kopieren der .dll nach Sys64WOW, System32, registrieren der DLL über Regsvr32 (liefert Fehlermeldung),

- Dependency Walker liefert nur eine Abhängigkeit von der Kernel32.dll und die ist ja vorhanden.

- Änderung des Declare Statements auf Private Declare PtrSafe ...

- Einbinden der LoadLibrary Funktion aus der Kernel32.dll und direktes Laden von "MeineDll.dll" liefert als Rückgabewert 0 und Err.LastDllError 1114 (zu dem ich über Google nix sinnvolles gefunden habe - in den Microsoft Fehlerlisten kommt die Zahl nicht mal vor O_o)

- Über Extras-Verweise die .dll angeben hat auch nicht geholfen

- Ausschalten des Antivirus Programms hat ebenfalls nicht gefruchtet (ich hatte gelesen das Kaspersky wohl zum Teil API Calls über VBA unterbindet und gehofft das wäre bei Norton eventuell auch der Fall)

 

Ich bin dankbar für jeden weiteren Tipp

Viele Grüße

 

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel 2003 .dll in Excel 2010 nicht verwendbar?
14.07.2014 17:00:22 B.Liedtke
NotSolved