Anzeige
Archiv - Navigation
1276to1280
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

DLL updaten

DLL updaten
Born
Hallo Forum,
ich habe mal wieder eine Frage an die Profis.
Ich habe mit .NET eine COM-DLL geschrieben, die ich in Excel einbinde. In Excel möchte ich gern eine Prozedur schreiben, die bei Vorliegen einer neuen Version der DLL diese von einem Netzlaufwerk nach C: kopiert und sie dadurch updatet.
Muss ich dazu die alte DLL zuerst aus der Registry entfernen? Oder reicht es, einfach die DLL zu überschreiben? Muss ich dazu zuvor den Verweis in Excel auf die DLL entfernen und anschließend neu setzen?
Mir reicht eine kurze Beschreibung des Vorgehens; den Code dazu kann ich mir dann selbst zusammenschreiben oder -googlen.
Vielen Dank,
M. Born

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: DLL updaten
22.08.2012 17:43:13
Tino
Hallo,
ich persönlich würde dies nicht über Excel machen, evtl. über ein Batchfile.
Wenn Excel offen ist und diese Dll bereits verwendet wurde ist sie schreibgeschützt und
kann nicht überschrieben werden.
Sonst könnte es so funktionieren.
'Achtung der Zugriff auf VBA-Projekte muss vertraut werden 

Sub Beispiel()
Dim DllPath As String, CopyPath As String

'Quelle 
DllPath = "D:\Ordner\MeineDll.dll"

'Ziel 
CopyPath = "C:\Dll\MeineDll.dll"

'deregistrieren 
deregistrieren CopyPath, "Alias_Name_der_Dll"

'kopieren 
FileCopy DllPath, CopyPath

'regestrieren 
regestrieren CopyPath
End Sub

Sub regestrieren(sPathDll$)
Shell "regsvr32 /s " & Chr(34) & sPathDll & Chr(34)
ThisWorkbook.VBProject.references.AddFromFile (sPathDll)
End Sub

Sub deregistrieren(sPathDll$, strAlias$)
On Error Resume Next
ThisWorkbook.VBProject.references.Remove _
ThisWorkbook.VBProject.references(strAlias)
Shell "regsvr32 /s /u " & Chr(34) & sPathDll & Chr(34)
End Sub
Gruß Tino

Anzeige
AW: DLL updaten
23.08.2012 09:18:34
Born
Hallo Tino,
vielen Dank für die schnelle Antwort. Ich werde mich jetzt mal dransetzen und Deinen Vorschlag implementieren.
Viele Grüße,
M. Born

AW: DLL updaten
23.08.2012 12:53:34
Born
Ich habe Tino's Code übernommen. Das Entfernen und Kopieren der DLL funktioniert auch. Ich bekomme jedoch eine Fehlermeldung "DLL konnte nicht geladen werden" beim Ausführen von ThisWorkbook.VBProject.references.AddFromFile (sPathDll).
Auch das Laden über AddFromGUID funktioniert nicht. Kann man irgendwo prüfen, ob die Registrierung erfolgreich war?

AW: DLL updaten
23.08.2012 15:38:55
Tino
Hallo,
wenn die Dll Registriert ist und Du Excel neu startest,
sollte diese im VBA unter Extras Verweise in der Liste stehen.
Hast Du den Zugriff auf VBA Projekte vertraut?
Ist der Pfad zur dll richtig?
Hast Du auf Win die Rechte eine Registrierung durchzuführen?
Gruß Tino

Anzeige
AW: DLL updaten
23.08.2012 16:37:03
Born
Hallo Tino,
ich habe lokale Admin-echte auf meinem PC und konnte die DLL auch problemlos manuell registrieren, als ich sie das erste Mal erstellt habe. Den Pfad habe ich aus dem Explorer rüberkopiert und VBA wir auch vertraut.
Muss nach dem Registrieren Excel neu gestartet werden? Ich habe COM-DLLs von Microsoft, die auch ohne Neustart ge- und entladen werden können.
Ich habe mir eine Liste mit den Eigenschaften aller Verweise erzeugt und dort wird statt der DLL die TLB angezeigt. Auch beim manuellen Setzen der Verweise über Extras-Verweise-Durchsuchen muss die TLB angeklickt werden, um den Verweis zu setzen.
Kann ich über Win-Bordmittel (z.B. einem Parameter von regsrv32) erkennen, ob die Registrierung erfolgreich war? Was mich auch wundert ist, dass ich keine Fehlermeldung erhalte, wenn ich die DLL im .NET neu kompiliert habe, aber am Pfad nichts geändert habe. Dort konnte ich ohne Probleme auf die neue Version der DLL zugreifen, auch ohne erneute Erstellung der TLB und Registrierung im GAC.
Gibt es ev. noch andere Punkte, die ich Prüfen könnte?
Vielen Dank schonmal im voraus,
M. Born

Anzeige
AW: DLL updaten
23.08.2012 17:10:37
Tino
Hallo,
ich würde dies über ein Batch File machen.
Alle Excel-Dateien schließen bzw. Programme die diese Dll verwenden.
Eine Textdatei (Notepad) erstellen und diese Zeilen hineinschreiben.
Rem Quelle und Ziel anpassen zum kobieren
copy "D:\FindFile.dll" "C:\Dll\"
Rem Pfad anpassen zu Dll fuer Registrierung
RegSvr32.exe /c "C:\Dll\FindFile.dll"
Pause
Datei umbenenne in z. Bsp. RegDll.bat und mit doppelklick ausführen.
Datei wird ersetzt und neu Registriert
Gruß Tino

AW: DLL updaten
24.08.2012 14:59:39
Born
Hallo Tino,
ich habe heute das Ganze nochmal getestet. Das Laden der DLL funktioniert, aber ich bekomme dann beim Aufrufen von Funktionen aus der DLL Automatisierungsfehler. Scheinbar muss die TLB neu erzeugt werden Das werde ich nächste Woche nochmal testen. Die Batch-Lösung wäre mir auch lieber, allerdings ist es in der geplanten Lösung nicht umsetzbar.
Vielen Dank für Deine Hilfe,
M. Born
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige