Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1116to1120
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

Verknüpfungen mit Addins Automatisch erzeugen

Verknüpfungen mit Addins Automatisch erzeugen
Tobias
meine macros habe ich ausgelagert in eine xla Datei, dass bei einer MacroAktualisierung nicht bei allen Benutzern die xls Dateien erneuert werden müssen. Aber die Stelle wo die xla Datei liegt, kann sich ja auch einmal ändern und so sollte jeder Nutzer die Möglichkeit sehr simpel die neue Stelle anzugeben. Dazu gibt es eine Optionszelle wo der neue Pfad angegeben wird und dann muss nur noch das Macro InstallAddIn gestartet werden. Dies funktioniert insoweit, dass die alte Referenz entfernt wird, aber beim installieren der neuen Referenz, wird immer noch zu der alten Position verlinkt, obwohl der Pfad ein anderer ist. Sieht jemand das Problem?
Option Explicit
Public Sub InstallAddIn()
Dim VBE As Object
Dim wbs As Range
Dim wb As Workbook
Dim Verweisname As String
Verweisname = "VBAProject"
Set wb = ThisWorkbook
'liest den Pfad des Addins aus dem Worksheet
Set wbs = wb.Worksheets("Datenfluss").Range("B27")
'existiert diese Datei ?
If Dir(wbs)  "" Then
'ja, dann alten Verweis entfernen
RemoveReferenceInProject
'dann Verweis setzen
AddIns.Add filename:=wbs, CopyFile:=False
Set VBE = Application.VBE.ActiveVBProject
VBE.References.AddFromFile wbs
Else
'Nein, dann entsprechender Hinweis
MsgBox "Die Datei " & wbs & _
" wurde nicht gefunden !"
End If
End Sub
'Entfernt die alte Referenz
Public Sub RemoveReferenceInProject()
Dim objVBE As Object
Dim oRef As Object
On Error Resume Next
Set objVBE = ActiveWorkbook.VBProject.References
For Each oRef In objVBE
If UCase(oRef.Name) = UCase("VBAProject") Then
objVBE.Remove objVBE(oRef.Name)
Exit For
End If
Next
Set objVBE = Nothing
On Error GoTo 0
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
keine Lösung
12.11.2009 10:40:35
Tino
Hallo,
ich habe es jetzt nicht getestet, aber ich denke Remove deaktiviert nur dieses Addin und es ist in der Liste noch vorhanden und nicht aus der Registrierung gelöscht.
Mit VBA wird es sehr aufwendig dies zu machen, daher Frage offen.
Gruß Tino
AW: keine Lösung
12.11.2009 11:10:13
Luschi
Hallo Tobias, Tino,
genau aus diesem Grund installiere ich meine eigenen *.xla-Dateien nicht, sondern öffne sie wie normale Workbooks im Open-Ereignis der jeweiligen Arbeitsmappe (AM). Die Vorteile sind:
- man muß das AddIn nicht installieren
- ändert sich der Pfad - muß man es nicht deinstallieren
- durch das Öffnen des AddIns als normale AM verhält es sich trotzdem wie ein installiertes AddIn
- es kommt keine Meldung wegen der vorhandenen Makros im AddIn
- lediglich die Aktionen aus den Ereignissen Workbook_AddinInstall und Workbook_AddinUninstall
   muß man in die Ereignisse Workbook_Open bzw. Workbook_BeforeClose umlagern
Gruß von Luschi
aus klein-Paris
Anzeige
AW: keine Lösung
12.11.2009 17:49:39
Tobias
Hallo Luschi,
Deine Variante hört sich praktikabel an. Nur weiß ich nicht genau was mit Workbook_AddinInstall und Workbook_AddinUninstall gemeint ist. Denn wenn ich danach Google, finde ich nur Subroutinen um Sachen zu der Menüleiste hinzuzufügen. Meine Macros haben aber keine Buttons.
Geöffnet habe ich es mit diesem Befehl:
Workbooks.Open Filename:="PFAD\Dateiname.xla"
Leider schmeißt Excel immernoch Makro Fehler, weil Excel die nötigen Dateien nicht findet.
Das sind ArbMappen-Ereignisse, die im...
12.11.2009 20:22:03
Luc:-?
...Zusammenhang mit der (De-)Installation eines AddIns auftreten, Tobias!
Dazu musst du nicht „googeln“, sondern nur die VBE-Hilfe benutzen (Ereignisse der Arbeitsmappe bzw Workbook-Events)...
Gruß Luc :-?
@Luschi: Was machst du mit Fremd-AddIns (falls du überhpt welche verwendest)? Die könnten doch diese EventProcs enthalten, worauf du dann keinen Einfluss mehr hättest (bzw haben solltest), wenn das Projekt geschützt ist... ;-)
Gruß Luc :-?
Anzeige
AW: Das sind ArbMappen-Ereignisse, die im...
13.11.2009 10:39:55
Luschi
Hallo Luc,
da unsere Excel-Dateien (je 1 xls/xla-Datei) in sich geschlossene Anwendungen sind (Baufinanzierung, allg. Kreditfinanzierung usw.), betreibe ich schon einen bestimmten Aufwand, Fremd-AddIns für diese Zeitdauer unwirksam zu schalten (Menü- und Symbolleisten abschalten, Tastenkombinationen deaktivieren, Fremdfunktionen nach der Eingabe durch den User in das Tabellenblatt wieder löschen...) und beim Schließen wieder in den Urzustand zu bringen.
Sollte es bei dem Deaktivieren/Zurücksetzen in den Ausgangszustand Probleme geben, dann mache ich beim Kunden eine Fernwartung per 'Teamviewer' und habe so wieder etwas gelernt, was ich noch zusätzlich beachten muß. Dann wird das Neue sofort in die xla-Datei eingebaut und diese auf den Ftp-Server geladen. Sind die Kunden beim nächsten Programmstart unserer Anwendungen ONLINE, so kriegen sie eine Info auf den BS, das es eine neue Programm-Version gibt mit der Aufforderung über den Menüpunkt 'Extras - Download neue Version' dies zu tun. Das Download-Programm selbst ist eine VB6-Routine.
Gruß von Luschi
aus klein-Paris
Anzeige
Aha, dann wäre das wahrscheinlich mit...
13.11.2009 12:03:31
Luc:-?
...meinem AddIn (udFktt) unverträglich, Luschi,
aber macht nichts, mit Finanzdienstleistung hab' ich eh nichts mehr zu tun... ;-)
Gruß Luc :-?
VBE.References.AddFromFile wbs.Value '_oT
12.11.2009 12:42:28
NoNet
_oT = "ohne Text"
Value?
12.11.2009 12:58:49
Tino
Hallo,
wie geschrieben ich habe es nicht getestet, aber wbs.Value soll helfen?
Value ist doch die Standarteigenschaft von einem Rangeobjekt, oder nicht?
Gruß Tino
Bei SET ist es aber das Objekt (ZELLE) selbst !
12.11.2009 13:15:04
NoNet
Hey Tino,
Habe es auch nicht getestet, aber das sprang mir gleich ins Auge... ;-)
Gruß NoNet
AW: Bei SET ist es aber das Objekt (ZELLE) selbst !
12.11.2009 14:16:30
Luschi
Hallo NoNet,
Tino sollte Recht haben, daß der Remove-Befehl das AddIn nur deaktiviert (Häckchen weg) - aber nicht den Registry-Eintrag löscht. Aus diesem Grund werden bei mir keine AddIn's mehr installiert, sondern als Workbook geöffnet (siehe meine Info zuvor!).
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige