Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Verknüpfungen mit Addins Automatisch erzeugen | Herbers Excel-Forum


Betrifft: Verknüpfungen mit Addins Automatisch erzeugen von: Tobias
Geschrieben am: 12.11.2009 10:16:31

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

  

Betrifft: keine Lösung von: Tino
Geschrieben am: 12.11.2009 10:40:35

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


  

Betrifft: AW: keine Lösung von: Luschi
Geschrieben am: 12.11.2009 11:10:13

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



  

Betrifft: AW: keine Lösung von: Tobias
Geschrieben am: 12.11.2009 17:49:39

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.


  

Betrifft: Das sind ArbMappen-Ereignisse, die im... von: Luc:-?
Geschrieben am: 12.11.2009 20:22:03

...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 :-?


  

Betrifft: AW: Das sind ArbMappen-Ereignisse, die im... von: Luschi
Geschrieben am: 13.11.2009 10:39:55

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


  

Betrifft: Aha, dann wäre das wahrscheinlich mit... von: Luc:-?
Geschrieben am: 13.11.2009 12:03:31

...meinem AddIn (udFktt) unverträglich, Luschi,
aber macht nichts, mit Finanzdienstleistung hab' ich eh nichts mehr zu tun... ;-)
Gruß Luc :-?


  

Betrifft: VBE.References.AddFromFile wbs.Value '_oT von: NoNet
Geschrieben am: 12.11.2009 12:42:28

_oT = "ohne Text"


  

Betrifft: Value? von: Tino
Geschrieben am: 12.11.2009 12:58:49

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


  

Betrifft: Bei SET ist es aber das Objekt (ZELLE) selbst ! von: NoNet
Geschrieben am: 12.11.2009 13:15:04

Hey Tino,

Habe es auch nicht getestet, aber das sprang mir gleich ins Auge... ;-)

Gruß NoNet


  

Betrifft: AW: Bei SET ist es aber das Objekt (ZELLE) selbst ! von: Luschi
Geschrieben am: 12.11.2009 14:16:30

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


Beiträge aus den Excel-Beispielen zum Thema "Verknüpfungen mit Addins Automatisch erzeugen"