Hallo Robert,
dein Addin wird vermutlich viel mehr machen als der Makrorekorder aufzeichnen kann. Jeder Button im Menüband führt im Endeffekt ein dahinerliegendes Makro aus. Du musst nur den zugehörigen Makronamen herausfinden. Wie man das mit dem CustomUI-Editor macht weiß ich leider nicht, da ich noch mit Symbolleisten arbeite. Werde mich erst demnächst näher damit beschäftigen, wenn ich mir ein neues Office zugelegt habe. Vielleicht findet sich hier ja wer mit entsprechenden Tipps.
Sollte es keine Möglichkeit geben, den Makronamen über den CustomUI-Editor herauszufinden, kannst du das aber auch über den Objektkatalog tun. Ist nur etwas umständlicher.
- setze einen Verweis auf die entsprechende Objektbibliothek deines Addons. (musst du sowieso wenn du dein Vorhaben umsetzen willst)
- wähle in der oberen Combobox des Objektkatalogs die eben gesetzte Bibliothek aus.
- finde eine Klasse die einem Standardmodul entspricht. Das Symbol dazu sieht aus wie ein Atom. Im Link zum Objektkatalog ist in der Abbildung z.B. die Klasse Conversions ein Modul. Das steht auch im Beschreibungsfeld unten. Darin enthalten ist zumindest eine Methode (Sub oder Function) die vom Namen her deinem gewünschten Aufruf entspricht.
- Teste ob es sich um das gewünschte Makro handelt indem du aus einem Modul deiner Arbeitsmappe heraus den Befehl Call Makroname (natürlich innerhalb einer Sub) aufrufst wobei du Makroname durch den gefundenen Namen ersetzt.
- Wenn es sich um das gesuchte Makro handelt setzt du vor Call Makroname noch den Befehl Application.OnTime Now + TimeValue("0:00:10"), "DeinSubName" wobei du DeinSubName durch den Namen deiner Sub ersetzt, mit der du Makroname aufrufst.
In diesem Beispiel wird das Makro des Addins alle 10 sekunden aufgerufen. Um das Intervall wieder zu stoppen einfach nochmal den gleichen Ontime-Befehl aufrufen wobei du den Parameter Schedule auf false setzt.
Dim Zeitpunkt As Date
Sub IntervallStarten()
Zeitpunkt = Now + TimeValue("0:00:10")
Application.OnTime Zeitpunkt, "IntervallStarten"
Call Makroname
End Sub
Sub Makroname()
MsgBox "Test"
End Sub
Sub IntervallStoppen()
Application.OnTime Zeitpunkt, "IntervallStarten", , False
End Sub
Gruß Mr. K.
|