Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro automatisch ausführen





Frage

Servus Leute! Ich möchte, dass ein Makro automatisch beim Öffnen einer Arbeitsmappe ausgeführt wird so, dass ein anderer Benutzer beim Arbeiten mit dem Tool das Makro nicht extra ausführen soll. Kann mir vielleicht jemand sagen, wie ich das einrichten kann? Danke Euch. MfG

Antwort 1 von RIDDIK

kleine Korrektur:

Ich habe: Windows 2000 NT, Excel.
Das Tool enthällt mehrere Makros, und nur eines davon soll mit dem Öffnen der Arbeitsmappe gleichzeitig automatisch ausgeführt werden.

Antwort 2 von JoeKe

Moin RIDDIK,

um das Makro beim öffnen der Mappe auszuführen, kopiere es in das VBA-Diese Arbeitsmappe.
Mit Alt+F11 in die VBA Umgebung wechseln und dort den betreffneden Code nach der Zeile "Sub -hier der Name-()" bis vor "End Sub" kopieren. Anschließend im Projekt-Explorer "Diese Arbeitsmappe" mit Doppelklick anwählen. In den beiden Dropdownfeldern über dem Codefenster wählst du "Workbook" und "open" aus und fügst deine Codezeilen dann zwischen "Private Sub Workbook_Open()" und "End Sub" ein.
Nun wird der Code jedesmal ausgeführt, wenn die Mappe geöffnet wird.


MfG

JöKe

Antwort 3 von RIDDIK

hallo JöKe,

dankefür den Tip. Das funktionirt super, aber jatz habe ich ein weiteres Problem dadurch.

Das Makro soll in der Menü-Leiste oben einen Extra-Menüpunkt erstellen. Wenn ich zuerst Excel starte und dann die Arbeitsmappe, wird das Makro automatisch ausgeführt, und der benötigte Extra-Menüpunkt in der Menü-Leiste erscheint. Aber, wenn ich die Arbeitsmappe schließe, bleibt dieser Extra-Menüpunkt in der Menü-Leiste erhalten. Und, wenn ich dann die gleiche Arbeitsmappe erneut öffne, wird das Makro ebenfalls erneut ausgeführt, und es erscheint ein zweites (gleiches) Extra-Menüpunkt in der Menü-Leiste.

Das möchte ich aber vermeiden. Weisst du vielleicht, wie ich das erreichen kann.

MfG

Antwort 4 von Eleve

Hallo RIDDIK

Locke hat mir wie folgt geholfen:

Zitat:

Schreibe doch einfach in eine versteckte Zelle
oder ein ausgeblendetes Blatt eine 1 nach
erfolgtem Ausführen.
Beim Start fragst Du ab ob

If Range("xx").Value=1 then
Exit Sub
End if

Gruß
Locke

PS

Wenn die Zelle benutzerdefiniert mit ;;; formatierst wird deren Inhalt nicht angezeigt


Könnte auch für Dich die Lösung sein.

Viele Grüße

Eleve

Antwort 5 von JoeKe

Hallo RIDDIK,

dafür muss du den Menüpunkt vorm schließen wieder mit folgendem Makro löschen:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim cbc As CommandBarControl
For Each cbc In Application.CommandBars.ActiveMenuBar.Controls
If cbc.Caption = "Hier den Namen deines Menues" Then cbc Delete
Next cbc
End Sub


MfG

JöKe

Antwort 6 von RIDDIK

Hallo JöKe,

h-m-m das würde schon funktionieren, aber da ist noch ein Haken: Die Arbeitsmappe ist als eine Schablone angelegt. Der Benutzer öffnet sie (Makro gelaufen, Menüpunkt in der Leiste, 1 ist in der Zelle) und nach dem Bearbeiten schliesst sie wieder, aber unter anderem Namen gaspeichert. Dann muss er wieder die "saubere" Schablone (ohne 1 in der Zelle)zum bearbeiten öffnen, und an dieser Stelle haben wir ein zweites Menüpunkt da.

Eigentlich soll vor dem Makro eine Art Prüfung ablaufen: wenn "..."-Menüpunkt vorhanden, dann "End Sub", oder ähnlich.

Eine Idee?

MfG

Antwort 7 von RIDDIK

wofür steht das "cbc"?

Antwort 8 von RIDDIK

ich habe deine Code kopiert und bei mir eingefügt. es koomt eine Fehlermeldung beim Kompillieren an der Stelle "Delete"

Antwort 9 von JoeKe

Hallo RIDDIK,

das müsste so gehen:

Private Sub Workbook_Open()
Dim cbc As CommandBarControl
For Each cbc In Application.CommandBars.ActiveMenuBar.Controls
If cbc.Caption = "Hier den Namen deines Menues" Then Exit Sub
Next cbc

´Hier den anderen Code rein

End Sub


Das habe ich jetzt allerdings nicht testen können.

MfG

JöKe

Antwort 10 von JoeKe

Hallo,

cbc ist eine Variable.

Der Fehler kommt wahrscheinlich dadurch, dass du den Namen dienes Menüs nicht angegeben hast.

If cbc.Caption = "Hier den Namen deines Menues"
Then cbc Delete

oder die " vergessen hast.

MfG

Antwort 11 von RIDDIK

Ihabe es auprobiert, und es geht nicht. Vielleicht mache ich da was falsch?

(wenn es dir weiter hilft, mir zu helfen)
meine Code:
Option Explicit

Sub Menü()
Dim MenüLeiste As CommandBar
Dim neuesMenü As CommandBarControl, neuerEintrag As CommandBarControl
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("Zellfarbe u. Rahmen").Delete
Set MenüLeiste = CommandBars.ActiveMenuBar
Set neuesMenü = MenüLeiste.Controls.Add(Type:=msoControlPopup, Temporary:=True)
neuesMenü.Caption = "Zellfarbe/Rahmen"
Set neuerEintrag = neuesMenü.Controls.Add(Type:=msoControlButton, Temporary:=True)
neuerEintrag.Caption = "Zellfarbe ändern"
neuerEintrag.OnAction = "Zellfarbe"
Set neuerEintrag = neuesMenü.Controls.Add(Type:=msoControlButton, Temporary:=True)
neuerEintrag.Caption = "Rahmen ändern"
neuerEintrag.OnAction = "Rahmen"
neuerEintrag.BeginGroup = True
Set MenüLeiste = Nothing
Set neuesMenü = Nothing
Set neuerEintrag = Nothing
End Sub

Sub Zellfarbe()
ActiveSheet.Unprotect Password:="DeinPasswort"
If Selection.Cells.Locked = False Then
Application.Dialogs(xlDialogPatterns).Show
ActiveSheet.Protect Password:="DeinPasswort"
Else
ActiveSheet.Protect Password:="DeinPasswort"
End If
End Sub

Sub Rahmen()
ActiveSheet.Unprotect Password:="DeinPasswort"
If Selection.Cells.Locked = False Then
Application.Dialogs(xlDialogBorder).Show
ActiveSheet.Protect Password:="DeinPasswort"
Else
ActiveSheet.Protect Password:="DeinPasswort"
End If

End Sub


Sub Menü_weg()
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("Zellfarbe").Delete
End Sub


und jetzt die Code von "DieseArbeitsmappe":

Option Explicit

Private Sub Workbook_Open()
Dim cbc As CommandBarControl
For Each cbc In Application.CommandBars.ActiveMenuBar.Controls
If cbc.Caption = "Hier den Namen deines Menues" Then Exit Sub
Next cbc
Call Menü
End Sub

wenns net hilft, dann trotzdem Danke für deine Bemühungen.

Antwort 12 von RIDDIK

In deiner ersten Variante habe den Namen schon eingefügt und es ist nicht gegangen. In deiner zweiter Variante habe ich es übersehen, aber jetzt habe ich es korriegiert und es klappt wunderbar.

Vielen-vielen DANK!

Antwort 13 von JoeKe

Da nich für. Viel Erfolg weiterhin.

MfG

Antwort 14 von RIDDIK

Hallo JöKe,

ich habe wieder ein Problem mit diesem Menüpunkt.
Es funktioniert zwar mit dem "nicht-wieder-auftauchen", nur der Menüpunkt selbst bleibt Funktionslos. Und das ist ja das Schlimme.

Was sagst du dazu?

MfG

Antwort 15 von RIDDIK

Enschuldidigung jetzt geht es wieder, der PC hat rumgesponnen

Antwort 16 von JoeKe

So was hab ich mir schon gedacht.

Habe mir aber inzwischen mal eine Mappe mit deinen Makros nachgebaut.
Und habe festgestellt, nachdem ich deine Anfragen hier im SN alle mal angesehen habe, dass du einwenig an deinem Ziel vorbei arbeitest. Du möchtest doch das Nutzer der Mappe bestimmte Zellen nur formatieren dürfen sonst aber keine Veränderungen machen können!? Das ist im Moment so aber nicht gewährleistet, da die Zellen die bearbeitet werden dürfen nicht geschützt sind und somit immer verändert werden können.
Oder hab ich das nicht richtig verstanden?

Gruß

Antwort 17 von RIDDIK

Hallo Leute,

Danke für die Hilfe. Auch an Eleve: ein guter Tip, aber nicht das, wonach ich gesucht habe.

Es läuft prima nach JöKe, aber eigentlich es würde auch im Ursprungszustand gehen. Ich habe da nähmlich einen kleinen Tipfehler von Ahnan (der, von dem ich die Codes habe) entdeckt:

Sub Menü_weg()
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("Zellfarbe/Rahmen").Delete
End Sub

und

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Menü_weg
End Sub

(dieses Code habe ich oben zwar nicht aufgeführt, steht aber im Diskuss)
Nochmals Danke an alle und viele Grüße

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: