Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1744to1748
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

AddIn per xslm einbinden

AddIn per xslm einbinden
25.03.2020 12:35:30
Sven
Hallo liebe Leute,
ich benötige Hilfe. Schreibe das erste mal hier, nur zur Info.
Habe ein Makro gebaut, welches in einer xlsm Datei namens Addin Installer liegt. Diese stelle ich Kollegen zur Verfügung.
Wenn die Addin Installer Datei geöffnet wird, wird eine Makro aufgerufen was prüfen soll, ob ein bestimmtes Addin bereits existiert. Wenn nicht, wird von einem Netzwerklaufwerk eine Verknüpfung in den eigenen …\Microsoft\Addin Order kopieren (Zentral.xlam.ink) und danach das Addin (Zentral.xlam) installieren. Darüber hinaus wird ein Button angelegt.
Zum Verständnis, dass Addin Zentral.xlam wiederum enthält Makros die die Kollegen dann verwenden können. Da das Zentral.xlam Addin schreibgeschützt ist, kann ich, nach aufheben des Schreibschutzes, Änderungen vornehmen. Das klappt soweit alles.
Folgende Probleme tauchen nun auf:
Zum einen findet er den Pfad nicht. Ich habe versucht den UNC-Pfad zu verwenden, habe diesen über cmd.exe ausgelesen und mehrfach überprüft aber irgendwo scheint der Wurm drin zu sein.
Zum anderen will er das Addin nicht installieren. Das kopieren funktioniert.
Anbei der Code
Option Explicit
Private Sub OKButton_Click()
With Application
.EnableEvents = False
End With
Me.Hide
'Autor: Sven
'Erstellt: 24.03.2020
'Update: -
Dim Addindatei As String
Dim AddinName As String
Dim AddinName2 As String
Dim AddinTitel As String
Dim pathvon As String
Dim pathzu As String
Dim Louis As String, LOG, UserN$, UserID$
Dim answer1 As String
UserN = Application.UserName 'der in Excel eingetragenen Name
UserID = Environ("Username") ' Der Anmeldename am Netzwerk
'************** Addin einbinden ********************
'Verzeichnes von wo / xxx wurden zum Datenschutz ersetzt ;)
pathvon = "\\xxx.168.xxx.21\Dokumente\Gemeinsame Dokumente\VBA\Neuer Ordner\"
'Welche Datei
AddinName = "Zentral.xlam"
AddinName2 = "Zentral.xlam.lnk"
AddinTitel = "Zentral"
'Verzeichnes nach wo
pathzu = Environ("AppData") & "\Microsoft\Addin\"
'pathzu = "C:\Users\" & UserID & "\AppData\Roaming\Microsoft\Addin\"
'       Installiert und aktiviere Add-In-
CopyFileFSO pathvon & AddinName2, pathzu, True
'prüfen ob das Addin bereits installiert ist
If Len(Dir(pathzu & AddinName)) = 0 Then
'Wenn Addin noch nicht installiert ist, dass installier es nun.
With Application
.AddIns.Add(AddinName2, False).Installed = True
'.AddIns(AddinTitel).Installed = True
End With
Else
'Wenn Addin bereits installiert ist, fragen ob Button hinzugefügt werden sollen
answer1 = MsgBox("Du besitzt das Addin bereits. Möchtets du nun die Button hinzufü _
gen?", _
vbYesNo)
'Wenn antwort ja dann gehe zu Button hinzugügen
If answer1 = vbYes Then
GoTo aa
End If
End If
'************** Menü (RibbonBar) anpassen ********************
aa:
'CommandBars(1).reset
With CommandBars(1)
'********** Button 1 **********
.Controls.Add Type:=msoControlButton, before:=1
.Controls(1).Caption = "I5 Statistiken" 'Menüeintrag
.Controls(1).OnAction = "Neu" 'Zuweisen der Prozedur
.Controls(1).FaceId = 4207
.Controls(1).Style = msoButtonIconAndCaption
'********** Button 2 **********
'        .Controls.add Type:=msoControlButton
'        .Controls(2).Caption = " Sortieren" 'Menüeeintrag
'        .Controls(2).OnAction = " Sortieren" 'Zuweisen der Prozedur
'        .Controls(2).FaceId = 4207
'        .Controls(2).Style = msoButtonIconAndCaption
End With
MsgBox "Die Installation wurde erfolgreich abgeschlossen." & vbCrLf & _
"Unter dem Menüpunkt Add-Ins ist das Add-In nun startbar."
With Application
.EnableEvents = True
End With
Unload Me
Application.DisplayAlerts = False
Workbooks.Close
Application.DisplayAlerts = True
End Sub

Private Function CopyFileFSO(strSourceFile As String, strTargetFile As String, _
Optional boolOverwrite As Boolean = True)
Dim ofso As Object
Set ofso = CreateObject("Scripting.FileSystemObject")
If boolOverwrite = True Then
ofso.CopyFile strSourceFile, strTargetFile
Else
ofso.CopyFile strSourceFile, strTargetFile, False
End If
End Function

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: AddIn per xslm einbinden
25.03.2020 12:41:18
mumpel
Weshalb überlässt Du die Verteilung dey Add-Ins nicht dem Netzwerkadministrator? Der kann das Add-In per GPO einbinden.
AW: AddIn per xslm einbinden
25.03.2020 13:21:51
Sven
Hallo mumpel,
danke für seine Antwort.
Das hat verschiedene Gründe.
Lass uns davon ausgehen, dass diese Möglichkeit nicht zur Debatte steht und ich eine Lösung über das Makro finden muss.
Gruß Sven
AW: AddIn per xslm einbinden
25.03.2020 13:34:25
mumpel
Bekommst Du eine Fehlermeldung beim Installationsversuch? Möglicherweise hat der Administrator das Installieren verboten. Vielleicht funktioniert es wenn die Anwender Excel als Administrator ausführen.
AW: AddIn per xslm einbinden
25.03.2020 14:07:22
Sven
Sorry hatte vergessen die Fehlermedlung zu nennen.
Als Info. Ich habe es bisher nur zu Hause versucht. Da habe ich ein kleines Netzwerk zum testen.
Die Fehlermedlung zum Pfad konnte ich lösen. Habe das s bei Addins vergessen.
Die Fehlermedlung zum Addin: Laufzeitfehler 1004. Die Add-Eigenschafften des Addins-Objektes kann nicht zugeordnet werden.
Anzeige
AW: AddIn per xslm einbinden
25.03.2020 14:36:06
Nepumuk
Hallo Sven,
warum lässt du das Addin nicht im Netzwerkordner und setzt nur einen Verweis in dem Apps der User? Das würde auch das ändern des Addins erleichtern.
Gruß
Nepumuk
AW: AddIn per xslm einbinden
25.03.2020 14:53:56
Sven
Hallo Nepumuk,
das Addin ist nach wie vor im Netzwerkordner.
Es ist bisher so, dass das Addin (Zentral.xlam) in einem zentralen Netzwerkordner liegt und nur eine Verknüpfung (Zentral.xlam.ink) in den lokalen Addin Order oder, was ich auch bereits versucht habe, im XLSTART Order, kopiert wird. So dachte ich, würde ein verweiß auf das zentral abgelegte Addin bestehen, woran Excel erkennt wo das Addin liegt und darauf zugreift. Ist es das was du meinst?
Aber das alles scheint nicht zu klappen. Vielleicht habt ihr einen Code für mich, der das einbinden eines Addins ohne Fehlermeldung möglich macht. Thx.
Zur Frage von @mumpel:
Das Anlegen der Buttons in der Ribbon Bar habe ich vor einigen Tagen das erste mal gemacht. Daher kenne ich die variante, die du erwähnst, noch nicht. Aber das schaue ich mir gleich mal an. Thx.
Anzeige
AW: AddIn per xslm einbinden
25.03.2020 15:00:41
Nepumuk
Hallo Sven,
dann genügt doch das (Beispiel):
Public Sub Test()
    AddIns.Add Filename:= _
        "G:\Eigene Dateien\Eigene Excelbeispiele\Menu_Symbolleiste\VBA_Commandbar.xlam"
    AddIns("Vba_Commandbar").Installed = True
End Sub

Gruß
Nepumuk
Anzeige
AW: AddIn per xslm einbinden
25.03.2020 18:16:57
Sven
Hallo Nepumuk,
habe dein Code ausprobiert und erhalte nach wie vor den selben Fehler.
Mir wird dann immer die Zeite: AddIns.Add Filename:= _ ...
Was ist da falsch an dem Code?

Public Sub Test()
'************** Addin einbinden ********************
'On Error Resume Next
'Verzeichnes von wo
'pathvon = "Z:\Dokumente\Gemeinsame Dokumente\VBA\Neuer Ordner\"
pathvon = "\\XXX.XXX.XXX.21\Dokumente\Gemeinsame Dokumente\VBA\Neuer Ordner\"
'Welche Datei
AddinName = "Zentral.xlam"
AddinName2 = "Zentral.xlam.lnk"
AddinTitel = "Zentral"
'Verzeichnes nach wo
pathzu = Environ("AppData") & "\Microsoft\Addins\"
'pathzu = "C:\Users\" & UserID & "\AppData\Roaming\Microsoft\Addins\"
'       Installiert und aktiviere Add-In-
CopyFileFSO pathvon & AddinName2, pathzu, True
'prüfen ob das Addin bereits installiert ist
If Len(Dir(pathzu & AddinName)) = 0 Then
'Wenn Addin noch nicht installiert ist, dass installier es nun.
'With Application
AddIns.Add Filename:= _
"\\XXX.XXX.XXX.21\Dokumente\Gemeinsame Dokumente\VBA\Neuer Ordner\Zentral.xlam"
'(AddinName2, False).Installed = True
AddIns("Zentral.xlam").Installed = True
'End With
Else
'Wenn Addin bereits installiert ist, fragen ob Button hinzugefügt werden sollen
answer1 = MsgBox("Du besitzt das Addin bereits. Möchtets du nun die Button hinzufü   _
_
_
gen?", _
vbYesNo)
'Wenn antwort ja dann gehe zu Button hinzugügen
If answer1 = vbYes Then
GoTo aa
End If
End If
'************** Menü (RibbonBar) anpassen ********************
End Sub

Private Function CopyFileFSO(strSourceFile As String, strTargetFile As String, _
Optional boolOverwrite As Boolean = True)
Dim ofso As Object
Set ofso = CreateObject("Scripting.FileSystemObject")
If boolOverwrite = True Then
ofso.CopyFile strSourceFile, strTargetFile
Else
ofso.CopyFile strSourceFile, strTargetFile, False
End If
End Function

Anzeige
AW: AddIn per xslm einbinden
25.03.2020 20:25:36
Sven
Hey Nepumuk,
ich habe den Fehler/ das Problem gefunden.
Ich hatte den Code in einer Userform eingebunden. Das scheint nicht zu funktionieren. Wenn ich die Addin.Add Funktion in ein extra Modul packe und es dann aufrufe, klappt alles.
Verrückt :)
Danke für Eure Hilfe.
Gutes Nächtle...
AW: AddIn per xslm einbinden
25.03.2020 15:01:36
mumpel
XLSTART ist nicht der Standard-Ordner für Add-Ins. Darüber wird das Add-In zwar geöffnet, aber m.W. nur als normale Datei und nicht als Add-In (steht dann m.W. nicht im Add-In-Manager).
AW: AddIn per xslm einbinden
25.03.2020 18:19:53
Sven
Hallo Mumpel,
das hab ich mir gedacht. Jedes mal wenn ich eine xlsm als Addin Speichern wollte, springt Excel automatisch in den Addin Ordern.
Hast du noch eine Idee was an dem Code problematisch sein könnte oder was vorher passieren muss damit der Code sicher greift?
Anzeige
AW: AddIn per xslm einbinden
25.03.2020 14:38:10
mumpel
BTW:
Weshalb arbeitest Du noch mit dem alten Commandbars-Objekt? RibbonX ist besser, da musst Du nicht prüfen ob die Elemente schon vorhanden sind da sie mit dem Starten der Datei immer neu erstellt werden

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige