PDA

Vollständige Version anzeigen : Makro zentral speichern


kibit on sight
28.02.2008, 13:15
Hallo,

bin relativ neu beim Exceln, hab jedoch relativ viel Erfahrung in der Codierung unter Access.

Nun, ich habe folgendes Problem:

ich bekomme unterschiedliche XLS Dateien, die immer gleich aufgebaut sind, unterschiedliche Namen haben, und mache da drin so allerlei Sachen (per vb) zum Aufbereiten der Daten, um letztendlich einen output zu erzeugen.

Die XLS Datei, die ich bekomme, enthält natürlich nicht das Makro bzw. den Code, den sie ausführen soll.

Wie kann ich denn dieses Problem lösen?

Gruß vom Bodensee
Peter

IngGi
28.02.2008, 13:35
Hallo Peter,

du kannst das Makro in einer ganz normale Exceldatei speichern, die du dann allerdings jedesmal, wenn du das Makro nutzen willst, zuerst öffnen musst. Wenn du es öfters nutzt, bietet es sich vielleicht an, das Makro in der Personl.xls zu speichern. Die wird ja bei jedem Excelstart automatisch im Hintergrund geöffnet, so dass das Makro immer zur Verfügung steht. Oder du speicherst das Makro in einer AddIn-Datei, die du dann bei dir in Excel einbindest. Auch diese (eingebundene) AddIn-Datei wird bei jedem Excelstart automatisch im Hintergrund geöffnet. Das AddIn hat gegenüber der Personl.xls den Vorteil, dass du die Datei leicht an andere Nutzer weitergeben kannst.

Gruß Ingolf

kibit on sight
28.02.2008, 14:02
Hi Ingolf,

danke für dir Tipps. Ich werde wohl das Makro in einer separarten XLS speichern, von der aus dann die andere Datei geöffnet wird. Die add in Lösung hört sich auch net schlecht an, ich will jedoch nicht soviel Aufwand in das drumherum reinstecken und ausserdem muss es ja keine dialogesteuerte Anwendung werden.

Gruss
Peter

Yim
28.02.2008, 14:39
Addins sind eine Geniale Erfindung. Du musst die XLS nur als XLA speichern und eine Häkchen in Extras > Addins setzten.

Speicherort:
C:\Dokumente und Einstellungen\USERNAME\Anwendungsdaten\Microsoft\AddIns

Mit dem Code unten kannst du die Makros über ein Menü aufrufen, dazu einfach einen weiteren Set „ctr“ Block anfügen. Egal ob XLS oder XLA, das Menü wird mit der Mappe geladen und verschwindet wenn du sie schließt.





' Code für "DieseArbeitmappe"

Private Sub Workbook_Open()

create_toolbar

End Sub



' Code für ein "Modul"


Sub create_toolbar()

Set myMenuBar = CommandBars.ActiveMenuBar
Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, _
Temporary:=True)

newMenu.Caption = "Meine_Makros"


Set ctrl1 = newMenu.Controls _
.Add(Type:=msoControlButton, ID:=1)
ctrl1.Caption = "TestMakro"
ctrl1.TooltipText = " TestMakro"
ctrl1.Style = msoButtonCaption
With ctrl1
.OnAction = "Test" 'Name des Makros hier"
End With


Set ctrl2 = newMenu.Controls _
.Add(Type:=msoControlButton, ID:=1)
ctrl2.Caption = "Lösch mich "
ctrl2.TooltipText = " Lösch mich"
ctrl2.Style = msoButtonCaption
With ctrl2
.OnAction = "delete_toolbar "
End With

myMenuBar.Visible = True

End Sub

Sub delete_toolbar()

CommandBars("Worksheet Menu Bar").Controls("Meine_Makros").Delete

End Sub


Sub Test()

MsgBox "Hallo Welt!"

End Sub

jinx
28.02.2008, 17:54
<font size="2" face="Century Gothic">Moin, Yim,

Menüs aus den Zellen einer Tabelle per Code generieren lassen statt Zusammenstellen von Menüpunkten per Einzelbefehlen - gerade bei AddIns...;)

AddIns können überall gespeichert und aufgerufen werden.</font>

Yim
28.02.2008, 21:29
Hallo jinx,

irgendwo müssen die Unterschiede zum Profi ja sein. Ich bin schon froh mittlerweile eigene Addins und Menüs erstellen zu können. Was ich noch nicht rausgefunden habe, ist wie man an mein Modell oben weitere Untermenüs dranhängt.