Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
392to396
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
392to396
392to396
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel Addin

Excel Addin
10.03.2004 13:28:18
Lars
Hallo Excelgemeinde !
Habe eine Arbeitsmappe als .xla (also ADDIN) abgespeichert. Über Extras->Addins wird das Addin auch erkannt und ausgeführt. Möchte jetzt aber diesem Addin eine Symbol (Button) zuweisen, das ich es bequem von der Bedienleiste aus aufrufen kann (wie Herbers xlwebfinder). Wie kann ich also einem Button dieses Addin zuweisen ???
Danke im Voraus !

Lars

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

Betreff
Datum
Anwender
Anzeige
AW: Excel Addin
10.03.2004 13:57:06
Hans W. Herber
Hallo Lars,
der richtige Weg ist, im Workbook_Open-Ereignis des AddIns eine Schaltfläche anzulegen und im Workbook_Close-Ereignis wieder zu löschen.
Die Lösung aus dem xlWebFinder findest Du, wenn Du Dir dort den Code im Klassenmodul der Arbeitsmappe ansiehst. Falls die Entwicklungsumgebung geschützt sein sollte, lautet das Passwort - wie bei fast allen meinen Utilities - HWH
Sieh Die auch in der Excel-FAQ die Beiträge zum Thema Menü an.
Gruss hans
AW: Excel Addin
10.03.2004 14:03:26
P@ulchen
Hallo Lars,
Du solltest den Button für die Ausführung des AddIn bereits im Workbook_open der xla erstellen.
Beispiel:


Sub Workbook_Open()
   Dim objBtn As CommandBarButton
   On Error Resume Next
   Application.CommandBars("Standard").Controls("Start").Delete
   Err.Clear
   Set objBtn = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, Temporary:=True)
   If Err <> 0 Then
      Err.Clear
      Set objBtn = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, Temporary:=True)
   End If
   On Error GoTo 0
   With objBtn
      .Caption = "Start"
      .OnAction = "start"   'Dein Makroname
      .BeginGroup = False
      .TooltipText = "Zellen bereinigen"
      .Style = msoButtonIcon
      .FaceId = 351
   End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   On Error Resume Next
   Application.CommandBars("Standard").Controls("Start").Delete
End Sub

     Code eingefügt mit Syntaxhighlighter 2.1

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
AW: Excel Addin
10.03.2004 14:09:31
Lars
Hallo Hans und P@ulchen !!
Vielen Dank für die Hilfe, habe wieder was dazugelernt !!! werde die Ttpps gleich mal ausprobieren und umsetzen !!!
@Paulchen:
1.) schöne Grüße in die Heimat (Sachsen), da ich ein umgesiedelter Chemnitzer bin ;)
2.) Den Syntaxhiglighter gibts jett in der Version 2.5 (leicht verbessert)
Danke nochmals für die sehr guten und schnellen Tipps !!!
Beste Grüße
Lars.
Danke für die Rückmeldung! oT
10.03.2004 14:11:48
P@ulchen
AW: Danke für die Rückmeldung! oT
10.03.2004 16:10:41
Lars
So, hab das jetzt mal ausprobiert, das Makro von Paulchen in meine .xla rein, jetzt bekomme ich beim start vo excel zwar den Button angezeigt, aber gleichzeitig auch die Fehlermeldung ->"Laufzeitfehler 1004: Die Methode 'Worksheets' für das Objekt '_Global' ist fehlgeschlagen.
Noch irgendwelche Ideen wie ich das bereinigen kann ???
Danke,
Lars.
Achja: Da wo ich mein Makro reinschreiben soll, war ich etwas verunsichert, was da reinkommt, habe da jetzt mein Exchange Makro drinne. Wenn das Addin ausgeführt wird passiert folgendes:


Option Explicit
Private Sub Workbook_Open()
   Dim objBtn As CommandBarButton
   On Error Resume Next
   Application.CommandBars("Standard").Controls("Endkundenpreiskalkulator").Delete
   Err.Clear
   Set objBtn = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, Temporary:=True)
   If Err <> 0 Then
      Err.Clear
      Set objBtn = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, Temporary:=True)
   End If
   On Error GoTo 0
   With objBtn
      .Caption = "Endkundenpreiskalkulator"
      .OnAction = "GetExchange"   'Dein Makroname
      .BeginGroup = False
      .TooltipText = "Endkundenpreiskalkulator"
      .Style = msoButtonIcon
      .FaceId = 351
   End With
   
   Application.Wait (Now + TimeValue("0:00:05"))
   
   UserForm1.Show 0
   
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   On Error Resume Next
   Application.CommandBars("Standard").Controls("Endkundenpreiskalkulator").Delete
End Sub


     Code eingefügt mit Syntaxhighlighter 2.5


Anzeige
AW: Danke für die Rückmeldung! oT
10.03.2004 16:45:22
P@ulchen
Hi Lars,
kann auf Anhieb erstmal keinen Fehler entdecken...
Wäre interessant zu wissen, an welcher Stelle im Code die Fehlermeldung kommt.
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
AW: Danke für die Rückmeldung! oT
10.03.2004 16:53:48
Lars
Hi Paulchen, schick dir nochmal den Text aus "Diese Arbeitsmappe" und "Modul2" (da steht das Makro drin). Jetzt ruft er beim Excelstart alles auf, Virenprüfung , mein Button, alles Ok. Sobald ich jetzt aber meinen erstellten Button drücke kommt die Fehlermeldung: "Laufzeitfehler 9 : Index außerhalb des gültigen Bereiches ".
Gehe ich jetzt aud debuggen markiert er mir den Verweis zu meinem Worksheet Wechselkurs. Nehme also an er hat Probleme mit der externen Datenanfrage, oder mit dem Verweis zu diesem Tabellenblatt an sich. Nachfolgend der Code:


Option Explicit
Private Sub Workbook_Open()
   Dim objBtn As CommandBarButton
   On Error Resume Next
   Application.CommandBars("Standard").Controls("Endkundenpreiskalkulator").Delete
   Err.Clear
   Set objBtn = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, Temporary:=True)
   If Err <> 0 Then
      Err.Clear
      Set objBtn = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, Temporary:=True)
   End If
   On Error GoTo 0
   With objBtn
      .DescriptionText = "Endkundenpreiskalkulator"
      .Caption = "Endkundenpreiskalkulator"
      .OnAction = "GetExchange"  'Dein Makroname
      .BeginGroup = False
      .TooltipText = "Endkundenpreiskalkulator"
      .Style = msoButtonIcon
      .FaceId = 283
   End With
   
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   On Error Resume Next
   Application.CommandBars("Standard").Controls("Endkundenpreiskalkulator").Delete
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


und mein Makro:


Option Explicit

Public Sub GetExchange()
       
    With Worksheets("#Wechselkurs#")' <--- wird beim Debuggen markiert !!!'
    .Range("A1").QueryTable.Refresh BackgroundQuery:=False
    
    With Range("C7")
    .Replace _
        What:="down", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
    .Replace _
        What:="up", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
        End With
    End With
    
    Application.Wait (Now + TimeValue("0:00:05"))
   
    UserForm1.Show 0
    
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


Danke schonmal im Voraus für die freundliche Hilfe !!!
Lars.
Anzeige
AW: Danke für die Rückmeldung! oT
10.03.2004 17:08:38
p@ulchen
Nimm mal die Rauten aus dem Blattnamen, oder heißt Dein Blatt wirklich so ?
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
AW: Danke für die Rückmeldung! oT
10.03.2004 17:24:41
Lars
Hab das Mal gemachtund die Rauten gelöscht, unabhängig davon kommt immer noch dieselbe Fehlermeldung !!!
Kannn dir auch gerne mal die ganze Arbeitsmappe bzw. das Addin schicken !!!
AW: Danke für die Rückmeldung! oT
10.03.2004 18:37:47
p@ulchen
dann schick mal die Mappe:
paulchen66@email.de
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige