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

Selbstinstallierendes AddIn

Selbstinstallierendes AddIn
Jürgen
Servus Zusammen,
ich komme bei folgenden Problem nicht weiter:

Private Sub Workbook_Open()
'AddIn_automatisch_installieren()
Dim AddInName As String
Dim intAddIn As Integer
Dim AddInInstalliert As Boolean
AddInName = ThisWorkbook.Name
' Die Namen aller installierten Addins prüfen ...
For intAddIn = 1 To AddIns.Count
If AddIns(intAddIn).Name = AddInName Then
AddInInstalliert = True
Exit For
End If
Next intAddIn
If AddInInstalliert = False Then
'Menü erzeugen
Dim Menue As CommandBarPopup
Dim Schaltflaeche As CommandBarButton
' Menüpunkt anlegen
With Application.CommandBars("Worksheet Menu Bar")
Set Menue = .Controls.Add(Type:=msoControlPopup, _
before:=.Controls.Count, temporary:=True)
End With
' Unterpunkte im Menü anlegen
Menue.Caption = "&Werkzeug"                     ' Name des Menüs
Set Schaltflaeche = Menue.Controls.Add
ThisWorkbook.Sheets("Tabelle1").Shapes("Face_Grau-Weiß").Copy
With Schaltflaeche
.Style = msoButtonIconAndCaption    ' Format für Menüpunkt: Icon und Text
'.FaceId = 1445                      ' Nummer des Icons
.PasteFace
.Caption = "Markierung-Grau/Weiß"  ' Name der Menüzeile
.OnAction = "SchwarzWeiß"         ' Aktion ausführen
.BeginGroup = True                  ' Trennlinie erzeugen
End With
End If
If AddInInstalliert = False Then AddIns(AddInName).Installed = True
End Sub
Ich möchte meinen Kollegen einige Prozeduren die ich programmiert habe zur Verfügung stellen. Nun möchte ich aber nicht, dass die Kollegen jedes einzelne AddIn über den AddIn Manager installieren müssen und versuche deshalb das ganze automatisch zu erledigen. Leider klappt das nicht so wie ich mir das vorstelle.
Erreichen möchte ich folgendes:
1. Das AddIn soll nur installiert werden, wenn es noch nicht vorhanden ist.
2. Sollte das AddIn vorhanden sein, ist aber deaktiviert dann soll es aktiviert werden.
Ich hoffe ihr könnt mir helfen.
Vielen Dank

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

Betreff
Benutzer
Anzeige
AW: Selbstinstallierendes AddIn
03.07.2012 12:26:49
fcs
Hallo Jürgen,
ich hab jetzt -allerdings unter Excel 2010- versucht deine Wünsche umzusetzen, sollte aber auch unter Excel 2000 funktionieren.
Die Exceldatei, die du erstellst um die xla-Datei via Speichern-Unter zu erzeugen, solltest du immer ohne Aktivieren der Makros öffnen. Mit aktivierten Makros kommt immer eine Fehlermeldung.
Deinen Kollegen/Kolleginnen kannst du dann eine Kopie der xla-Datei schicken. Diese sollten die Datei ins Excel-Addins-Verzeichnis kopieren - dies ist aber kein Muss - und dann die xla-Datei per Doppelklick öffnen oder in Excel via Datei öffnen.
Viel Glück bei der Umsetzung
Franz
'Getestet unter Excel 2010 - Menü wird unter Menü "Add-Ins" angelegt
Private Sub Workbook_Open()
'AddIn_automatisch_installieren()
On Error GoTo Fehler
Dim AddInName As String
Dim intAddIn As Integer
Dim AddInInstalliert As Boolean
'    MsgBox "AddInn """ & ThisWorkbook.Name & """ wird jetzt installiert"
AddInName = ThisWorkbook.Name
Application.EnableEvents = False
' Die Namen aller installierten Addins prüfen ...
For intAddIn = 1 To AddIns.Count
If AddIns(intAddIn).Name = AddInName Then
AddInInstalliert = True
Exit For
End If
Next intAddIn
If AddInInstalliert = False Then
AddIns.Add ThisWorkbook.Name
AddIns(AddIns.Count).Installed = True
MsgBox "AddInn """ & ThisWorkbook.Name & """ ist jetzt installiert"
Else
If AddIns(intAddIn).Installed = False Then
AddIns(intAddIn).Installed = True
MsgBox "AddInn """ & ThisWorkbook.Name & """ ist jetzt installiert"
End If
End If
'Menü erzeugen
Dim Menue As CommandBarPopup
Dim Schaltflaeche As CommandBarButton
' Menüpunkt anlegen
With Application.CommandBars("Worksheet Menu Bar")
Set Menue = .Controls.Add(Type:=msoControlPopup, _
before:=.Controls.Count, temporary:=True)
End With
' Unterpunkte im Menü anlegen
Menue.Caption = "&Werkzeug"                     ' Name des Menüs
Set Schaltflaeche = Menue.Controls.Add
ThisWorkbook.Sheets("Tabelle1").Shapes("Face_Grau-Weiß").Copy
With Schaltflaeche
.Style = msoButtonIconAndCaption    ' Format für Menüpunkt: Icon und Text
'.FaceId = 1445                      ' Nummer des Icons
.PasteFace
.Caption = "Markierung-Grau/Weiß"  ' Name der Menüzeile
.OnAction = "SchwarzWeiß"         ' Aktion ausführen
.BeginGroup = True                  ' Trennlinie erzeugen
End With
Beenden:
Fehler:
With Err
Select Case .Number
Case 0 'Ales OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbInformation + vbOKOnly, _
"Fehler bei der Installation des AddInns """ & ThisWorkbook.Name & """"
End Select
End With
Application.EnableEvents = True
End Sub

Anzeige
Laufzeitfehler 1004
03.07.2012 14:08:25
Jürgen
Hallo Franz,
danke für deine Hilfe. Ich bin schon am "tüffteln", denn hier:
 If AddInInstalliert = False Then
AddIns.Add ThisWorkbook.Name '
Vielleicht fällt dir noch eine Idee ein.
Viele Grüße
Jürgen
AW: Laufzeitfehler 1004
03.07.2012 15:13:37
fcs
Hallo Jürgen,
mit "Fullname" sollte es genauso funktionieren.
Denke bitte daran, dass die Installation erst ohne Fehler läuft, wenn du die XLS-Datei als XLA-Datei gespeichert hast.
Danach dann am besten Excel schliessen und anschließend die XLA-Datei öffnen.
Wie erwähnt, die XLS-Datei möglichst ohne aktivierte Makros starten, funktioniert im Öffnen-Dialog, wenn beim Doppelklick auf den Dateinamen die Shift-Taste gedrückt ist (zumindest in den neueren Excel-Versionen.
Gruß
Franz
Anzeige
AW: Laufzeitfehler 1004
03.07.2012 16:23:44
Jürgen
Hallo Franz,
jetzt verwirrst du mich ein bisschen. Ich habe die Datei, die das AddIn werden soll als XLA gespeichert. Auch die Eingenschaft (IsAddIn) steht auf True.
Excel ist geschlossen und ich klicke doppelt auf die XLA Datei. Danach läuft das Programm in den Fehler. Auch wenn ich das ganze Schritt für Schritt laufen lasse. Sieht man deutlich das bis zum Befehl ADD alles glatt läuft.
----
Du meinst, die XLS Datei, die ich dann als XLA speicher, die soll ohne Makros geöffnet werden? Die Datei die ich erstellt habe, hatte ursprünglich auch keine Makros.
Wenn ich nur das erstellen des neuen Menüs in eine andere XLA Datei kopiere und diese dann per Add In Manager installiere bzw. aktiviere, kommt kein Fehler.
Viele Grüße
Jürgen
Anzeige
AW: Laufzeitfehler 1004
03.07.2012 17:40:31
fcs
Hallo Jürgen,
wenn ich eine xla-Datei/AddInn erstellen möchte, dann erstelle ich zunächst immer eine xls-Datei, die alle Funktionalitäten und Makros beinhaltet. Ist die xls fertig, dann wird sie gespeichert und danach als xla-gespeichert.
In deinem Fall gibt es das Problem, dass in der Workbook-Open-Prozedur mit ThisWorkbook gearbeitet wird, umden Status des AddInns zu prüfen. Das führt am Ende zu einem Fehler wenn du xls mit aktivierten Makros startest und sollte bei der xla-Datei fehlerfrei durchlaufen. Deshalb mein Hinweis, beim Editieren der XLS-Datei die Makros nicht zu aktiveren. Außer der Meldung passiert nichts schädliches. Aber man kann es halt einfach vermeiden.
Wenn die xla-Datei immer noch in einen Fehler läuft, dann passiert etwas Excel2000-spezifisches bei dem ich dir leider nicht weiter helfen kann.
Gruß
Franz
Anzeige
geht jetzt, aber Menü wird ggf. merhf. erst...
04.07.2012 08:39:17
Jürgen
Hallo Franz,
zuerst einmal vielen Dank für deine Zeit und deine Hilfe. Ich weiß zwar nicht ganz genau warum aber ich habe das ganze jetzt nochmal komplett neu in eine XLS Datei geschmissen und das dann als XLA gespeichert und jetzt gehts bis auf eine Kleinigkeit.
Wenn ich das AddIn installiert und aktiviert habe und klicke dann nochmal auf die XLA Datei, dann habe ich für diesen Moment (diese Exclesitzung) das Menü "Werkzeuge" das ich erstelle zweimal. Das sollte aber mit dem Makro verhindert werden.
Kannst du mir da nochmal unter die Arme greifen?
Wäre echt super.
Viele Grüße
Jürgen
Anzeige
AW: geht jetzt, aber Menü wird ggf. merhf. erst...
04.07.2012 12:20:36
fcs
Hallo Jürgen,
da stehe ich jetzt leider auch auf dem Schlauch. Irgendwie beißt sich bei mir die Katze in den Schwanz. Versuche ich das Erstellen der Menüs zu überspringen, dann funktioniert anschliessend das Eigentliche AddInn nicht mehr - Menü wird nicht erstellt.
Wahrscheinlich kriegt man das nur in den Griff, wenn man die schon vorhandenen Menüs auf ihre Einträge prüft. Da fehlt mir aber auch im Moment der Ansatz und ich hab keine Möglichkeit mit älteren Excelversionen zu testen.
Gruß
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige