# Funktionen in Excel-VBA nach umbenennen der Arbeitsmappe nicht mehr verfügbar



## zeppo (21. März 2006)

HalliHalloHallöle!

Ich arbeite gerade an einer Excel-Arbeitsmappe (Version 2002 SP3) mit mehreren Tabellen, darin eingebundenen VBA-Funktionen und einer Symbolleiste, der entsprechende public-Funktionen aus den Tabellen zugeordnet sind.
Funktioniert auch very well.

Nur wenn ich die Exceltabelle schließe und im Dateisystem umbenenne, dann 
spuckt Excel beim Start der neuen Tabelle einen Fehler aus, wenn ich die Funktionen aus der Symbolleiste aufrufen will.
Er versucht dann immer den Bezug des Makros zum alten Worksheetnamen herzustellen.
Auch ein neues zuweisen der Makros/Funktionen bringt nur für diesen Namen Besserung.
Nenne ich die Datei erneut um, funktionierts wieder nicht.

Weiß hier jemand Rat?


----------



## Nirraven (22. März 2006)

hm... entweder du hinterlegst das makro in der normal.xlt, ist aber nicht so schön, oder du machst deine tabelle als mustervorlage, damit ist gewährleistet, dass diese nicht umbenannt wird (Lässt sich aber nicht mit jedem Projekt vereinbahren), oder, da bin ich aber nicht 100%ig sicher ob, oder wie das geht, du lässt ein makro beim Worksheet_Open laufen, welches den Dateinamen ermittelt, und das Makro neu mit der Symbolleiste verknüpft.


----------



## zeppo (22. März 2006)

Ooops!
Darüber muss ich erstmal nachdenken.  

Die ersten beiden Wege kommen wohl nicht in Frage.
Vor allem nicht, da das Umbenennen der Datei Absicht ist. Es werden mehrere Versionen der Datei benötigt.

Kann mir gut vorstellen, dass die letzte Möglichkeit funktioniert, aber ich hab das Gefühl, als würd ich da mit Kanonen auf Spatzen schießen.
Ich dachte eigentlich, dass ich da irgend einen Dummfehler gemacht hab, der über ein Häkchen oder ne mir unbekannte Option auszubügeln ist.  
Da brauch ich ja für's Programmieren der Funktion länger, als für das Schreiben der gesamten Tabelle 

Sag mal: Ist das echt Standard, dass Makroverknüpfungen nich automatisch an den neuen Dateinamen gebunden werden, wenn man das Ding umbenamst? Das kann doch nicht sein, oder? *entsetzt schau*
Vielleicht liegt es aber auch daran, dass ich eine alte 98-Vorlage hatte, an der ich unter 2003 immer weiter geschraubt hab, bis sie gepaßt hat.
Ich hätte wohl gleich neu anfangen sollen *seufz*

Aber dir trotzdem erstmal vielen Dank für die Hilfe und die Hinweise.
Ich werd mal eine Nacht darüber schlafen und darüber grübeln.

Bis zum nächsten Thread


----------



## Nirraven (22. März 2006)

So, habs mir nochmal genau angeschaut... (Ich hasse Symbolleisten zeug... :-D )


```
Sub Makro1()
Application.CommandBars.Add("Test", , , True).Visible = True
Application.CommandBars("Test").Controls.Add msoControlButton, 2950, , 1, True
Application.CommandBars("Test").Controls.item(1).OnAction = "bla"
End Sub
```

So ginge möglichkeit nr 3.


```
OnAction = "bla"
```
Hier wird die Prozedur "bla" gestartet, wo du deinen code drin aufrufen könntest.

Das ganze Makro habe ich beim öffnen des Workbooks gestartet.

Hier ist dann auch der Dateiname egal.
Die Positionierung musst du noch einbauen.
Die Symbolleiste existiert auch nur temporär, wird beim schließen also wieder entfernt.


----------

