Funktion in DLL exportieren und in Excel nutzen


  • Mod

    Eine REG Datei ist der schlechte Weg, denn dann muss die DLL genau in dem Pfad liegen in dem die Reg-Datei es vorschreibt.

    Bleib bei der REGSVR32 Variante, dass der Weg, den COM für ActiveX Controls vorsiehtund die auch jeder Admin erwarten würde.



  • Okay, danke. 🙂



  • Naja, ich vermute mal das Problem ist dass deine dll eben kein COM Server ist. Aber regsvr32 kann afaik nicht nur COM Server registrieren sondern auch "normale" dlls. Schau dir mal die Parameter von regsvr32 an, iirc war da was...



  • Hab nachgeschaut. Hab nur die Wahl zwischen DLLInstall und DLLRegisterServer...



  • Und ist DllInstall() nicht genau was du willst?



  • Laut MSDN scheint das wie DllRegisterServer zu sein, nur dass man da noch Parameter übergeben kann. Mehr Infos finde ich nicht wirklich. Auch Beispiel-Implementationen finde ich kaum. Alles nicht so einfach...



  • Versuch einfach mal

    regsvr32 /i deinedll.dll
    


  • Dafür müsste ich erstmal DLLInstall aus meiner DLL exportieren. Und da habe ich ja das gleiche Problem wie bei DLLRegisterService. Ich hab's natürlich trotzdem ausprobiert und kriege die entsprechende Fehlermeldung, dass der Einstiegspunkt nicht gefunden wurde.



  • Ah verdammt, ich dachte DllInstall ist eine Systemfunktion. Lesen müsste man können 🤡



  • Man muss halt selbst den Registrierungscode und so schreiben, schade. Dabei will ich doch gar keine Funktionen usw. registrieren, sondern einfach nur die DLL allgemein verfügbar machen. Gibt es ja nicht so was wie ne PATH-Angabe? Einfach in system32 kopieren reicht leider nich 😕



  • Eisflamme schrieb:

    Gibt es ja nicht so was wie ne PATH-Angabe? Einfach in system32 kopieren reicht leider nich 😕

    Wenn der Ordner in dem die dll liegt in der PATH Variable eingetragen ist findet das System sie auf jeden Fall. Wenn Excel sie dann nicht findet kann das nur bedeuten dass es explizit in irgendwelchen anderen Pfaden sucht. In System32 reinkopieren war nie und ist keine gute Idee. Der Ordner heißt nicht umsonst System32...



  • Mir doch egal, was soll das denn schaden? Aber es klappt nicht, obwohl system32 im PATH liegt 😞



  • 64bit System? Excel ist eine 32bit Anwendung und System32 ist der falsche Ort für 32bit dlls auf einem 64bit Windows. Unter Windows Vista/7 ist der Ordner den du suchst SysWOW64, unter XP wars iirc System32\WoW64. Ich hoffe du gehst mit diesem Wissen nun verantwortungsvoll um und verwendest es nicht dazu die Systemordner mit irgendwelchen dlls vollzuspammen 😉



  • Juchu, es geht 🙂

    Aber jetzt Mal ernsthaft: Wieso sollte ich meinen Benutzern nicht dazu raten, die DLL dort hinzukopieren?



  • Eisflamme schrieb:

    Aber jetzt Mal ernsthaft: Wieso sollte ich meinen Benutzern nicht dazu raten, die DLL dort hinzukopieren?

    Wieso solltest du deinen Benutzern nicht auch dazu raten sämtliche Dateien die sie so erzeugen auf dem Desktop zu speichern!? Immerhin hat man da immer sofort Zugriff auf alles...

    Systemordner sind für Systemdateien gedacht. Irgendwelche dlls von Irgendjemandem sind keine Systemdateien wenn du mich fragst und haben dort daher einfach absolut nix verloren.

    Außerdem: Um etwas in einen Systemordner reinzukopieren benötigt man Administratorrechte. Das ist nicht umsonst so und davon auszugehen dass sowieso Jeder Admin-Rechte hat ist imo keine gute Idee.



  • Ich leg da immer alles Temporäre ab, find ich super. Und meine DLL ist ja so super, dass man die auch nie wieder löschen möchte -> system32

    Einziger Nachteil ist, dass man bei Neuinstallation des System sicherlich nicht an die Sicherung dieser fantastischen DLL denkt. 😞

    Im Endeffekt ist doch Excel Schuld. Würd das einfach im gleichen Verzeichnis nach DLLs suchen, wär das alles kein Problem, aber neeein...



  • Du könntest auch versuchen rauszufinden warum Excel die dll nicht findet. Ich finde es jedenfalls höchst merkwürdig dass es im SysWow64 geht aber mit PATH nicht. PATH sollte eigentlich praktisch immer durchsucht werden, außer wenn Excel das irgendwie explizit unterbindet. Bist du dir sicher dass du dich nicht einfach nur vertippt oder ein ; vergessen hast? Außerdem musst du Excel wohl neu starten nachdem damit es die Änderungen an PATH mitbekommt.


  • Mod

    dot schrieb:

    64bit System? Excel ist eine 32bit Anwendung und System32 ist der falsche Ort für 32bit dlls auf einem 64bit Windows.

    Excel gibt es auch als 64bit Anwendung.

    dot schrieb:

    Ich hoffe du gehst mit diesem Wissen nun verantwortungsvoll um und verwendest es nicht dazu die Systemordner mit irgendwelchen dlls vollzuspammen 😉

    Dem kann ich mich auch nur anschließen.
    Das Verzeichnis spielt sowieso bei einem COM Objekt keinerlei Rolle.



  • Aber nun, wo es drin ist, kann ich es von überall benutzen, das ist schon ein Vorteil.

    Was ist denn jetzt konkret der Nachteil daran?


  • Mod

    Eisflamme schrieb:

    Aber nun, wo es drin ist, kann ich es von überall benutzen, das ist schon ein Vorteil.

    Wie ich es versteheist es ein COM-Addin. Du kannst es sowieso überall benutzen, denn das Laden wird direkt durch COM ausgelöst und der Pfad steht sowieso explizit in der Registry.

    Wo siehst Du also einen Vorteil?


Anmelden zum Antworten