Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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.Installed -> Endlosschleife

Addin.Installed -> Endlosschleife
02.05.2014 13:43:12
Hendrik
Hallo zusammen,
mit dem unten stehenden Code versuche ich mein Addin sich selbst installieren zu lassen. Das Kopieren der Datei scheint auch zu funktionieren, aber wenn ich die Installed-Eigenschaft des Addins auf true setzen möchte, springt der Prozess wieder auf den Kopf von Workbook_Open() und fängt mich in einer Endlosschleife? Was mache ich falsch?
Vielen Dank und schöne Grüße!
Private Sub Workbook_Open()
Dim strStatus As String, strMeldung As String
Dim blnUmweg As Boolean
Dim strUmweg As String
'Wenn nicht bereits als Add-In installiert, wird es installiert:
If AddIns("SC-Toolbox für Excel 2010").Installed = False Then
If MsgBox("Soll " & strHtbName & " in der Version " & strHtbVersion & " als Add-In  _
installiert werden?" _
, vbQuestion + vbYesNo, strHtbName & "-Installer") = vbYes Then
'Es muss eine Mappe offen sein...
If Workbooks.Count = 0 Then blnUmweg = True
If blnUmweg = True Then
Workbooks.Add
strUmweg = ActiveWorkbook.Name
End If
'Add-In als Verknüpfung kopieren und aktivieren:
On Error GoTo errCopyInstall
AddIns.Add Filename:=ThisWorkbook.FullName, CopyFile:=False
On Error GoTo 0
AddIns("SC-Toolbox für Excel 2010").Installed = True
If blnUmweg = True Then Workbooks(strUmweg).Close
MsgBox strHtbName & " wurde erfolgreich installiert!", vbInformation, strHtbName & " _
_
-Installer"
End If
End If
Exit Sub
errCopyInstall:
MsgBox "Die Installation ist fehlgeschlagen." & vbCrLf & Err.Description, vbCritical,  _
strHtbName & "-Installer"
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Addin.Installed -> Endlosschleife
02.05.2014 21:11:25
Dieter
Hallo Hendrik,
durch den Befehl
AddIns("SC-Toolbox für Excel 2010").Installed = True

wird die Arbeitsmappe erneut geöffnet und es tritt wieder das Open-Ereignis ein.
Um das zu verhindern, schaltest du vor diesem Befehl die Ereignisbehandlung aus und nach dem Befehl wieder ein.
Das Programm sieht dann folgendermaßen aus:
Private Sub Workbook_Open()
Dim strStatus As String, strMeldung As String
Dim blnUmweg As Boolean
Dim strUmweg As String
'Wenn nicht bereits als Add-In installiert, wird es installiert:
If AddIns("SC-Toolbox für Excel 2010").Installed = False Then
If MsgBox("Soll " & strHtbName & " in der Version " & strHtbVersion & " als Add-In  _
installiert werden?" _
, vbQuestion + vbYesNo, strHtbName & "-Installer") = vbYes Then
'Es muss eine Mappe offen sein...
If Workbooks.Count = 0 Then blnUmweg = True
If blnUmweg = True Then
Workbooks.Add
strUmweg = ActiveWorkbook.Name
End If
'Add-In als Verknüpfung kopieren und aktivieren:
On Error GoTo errCopyInstall
AddIns.Add Filename:=ThisWorkbook.FullName, CopyFile:=False
On Error GoTo 0
Application.EnableEvents = False
AddIns("SC-Toolbox für Excel 2010").Installed = True
Application.EnableEvents = True
If blnUmweg = True Then Workbooks(strUmweg).Close
MsgBox strHtbName & " wurde erfolgreich installiert!", vbInformation, strHtbName & " _
-Installer"
End If
End If
Exit Sub
errCopyInstall:
MsgBox "Die Installation ist fehlgeschlagen." & vbCrLf & Err.Description, vbCritical, _
strHtbName & "-Installer"
End Sub
Viele Grüße
Dieter

Anzeige
AW: Addin.Installed -> Endlosschleife
05.05.2014 09:46:45
Hendrik
Hallo Dieter,
vielen Dank, damit funktioniert es.
Komisch, dass die ähnlich aufgebauten Codebeispiele, die man im Netz so findet, die EnableEvents-Eigenschaft auch nicht vorher explizit deaktivieren.
Grüße!

AW: Addin.Installed -> Endlosschleife
05.05.2014 12:31:48
Dieter
Hallo Hendrik,
vielen Dank für deine Rückmeldung.
Das Ausschalten der Ereignisbehandlung ist hier notwendig, weil innerhalb der Workbook_Open-Prozedur die Arbeitsmappe erneut geöffnet wird. Dadurch tritt erneut das Open-Ereignis ein und die Workbook_Open-Prozedur wird rekursiv aufgerufen. Das geht so unendlich weiter.
Wenn du ähnliche Workbook_Open-Prozeduren aus dem Internet mit deiner Prozedur vergleichst, dann musst du prüfen, ob innerhalb der Prozedur etwas geschieht, was erneut ein Ereignis auslöst und du musst prüfen, ob es vielleicht besser ist, die Behandlung des Ereignisses zu unterdrücken.
Viele Grüße
Dieter
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige