VC++ 6 DLL in Win 7 32bit wird in VBA nicht gefunden

daha

Grünschnabel
Hallo,
ich habe mal wieder ein Problem.

Ich habe unter XP x86 an Word 2007 über VBA eine DLL angebunden. Das geht ganz gut. Das habe ich auch mit Word 2003 getestet funktioniert auch. Das Problem ist, wenn ich den VBA-Code unter Windows 7 ausführe, kommt eine Fehlermeldung Datei blabla.dll nicht gefunden (Laufzeitfehler 53). Demnach funktioniert der gleiche Code, der unter XP lief unter Windows 7 (32bit) nicht mehr.

Die Funktionsdeklaration im VBA:
Code:
Declare Function disconnectClient Lib "TCPClientConnector.dll" () As Long

Eine absolute Pfadangabe hat unter Win7 auch nicht funktioniert.
Wenn ich die Sleep-Funktion aus der kernel32.dll deklariere und aufrufe, kommt kein Fehler.

Ich habe die Dll mit VC6 bzw. VC98 kompiliert, ist glaube ich das gleiche und ist somit eine Win32-DLL.

Woran kann das liegen? Ich bin jetzt echt am verzweifeln :confused: Das liegt doch nicht daran der der VC++-Compile zu alt für Win7 ist oder?

Besten Dank
 
Zuletzt bearbeitet:
OK hatte ich selber nicht daran gedacht, dass das eine Rolle spielt. Ich verlinke innerhalb der obenstehenden DLL auf eine weitere DLL, die einen ProgressDialog implementiert.

Bestandteil des ProgressDialogs sind folgende ActiveX-Steuerelemente:
  • Progressbar (MS Progressbar Control 6.0 (SP6) - aus .../system32/MSCOMCTL.OCX --> existiert auch unter Win7
  • 2 Label (MS Forms 2.0 Label) - aus .../system32/FM20.DLL --> existiert auch unter Win7

Entferne ich die Verlinkung zu dieser MFC-DLL, findet er auch die TCPClientConnector.dll.
Die Frage ist nun: Wie kann ich sicherstellen, dass der Progressdialog auf XP, Vista und Win7 läuft. Darf ich da nur bestimmte Steuerelemente verwenden? Oder muss ich bestimmte Dateien mit ausliefern? Wenn ja, welche sind das?

Da kann doch eigentlich nicht so schwer sein, wenn man nur wüsste wo die Infos stehen?

Bitte weiterhin um Hilfe!
Ein Statement, eine Vermutung oder eine Idee wären auch schon hilfreich.

Danke
 
Nachdem ich die MFC-DLL in eine Win32-Exe eingebunden habe hatte mir Win7 endlich gesagt welche DLL fehler. Es war die MFC42D.dll. Anschließend habe ich statt einer Debug-DLL eine Release-DLL erstellt und siehe da es funktioniert.

Selbst ist der Mann. Ich hoffe die Monologe helfen auch jemand anderem ...

Gruß, daha
 
OK hatte ich auch gerade entdeckt. Jedoch hätte ich mir gewünscht, dass VBA seine Fehlermeldung etwas präziser formuliert hätte.

Danke fürs Feedback.
 
Zurück