Ungültige Namen in ActiveWorkbook.names
31.07.2014 11:16:59
Johannes
vielleicht kann mir hier jemand helfen.
Ich habe mehrere hundert Excel-Dateien mit zum Teil verhunzten Namen. Entweder enthält refersTo einen Fehler oder der Name selbst ist irgendwie ungültig. Das macht mir bei anderen VBA Aktionen mit diesen Dateien Probleme.
Also wollte ich ein VBA schreiben, welches jede Datei öffnet und alle Namen aus der Datei rauslöscht und dann die Datei speichert. Habe dazu verschiedenste Code-Schnipsel gefunden, die aber alle nur bedingt funktionieren. Z.B. dieses
For y = ActiveWorkbook.Names.Count To 1 Step -1
Set n = ActiveWorkbook.Names(y)
n.Delete
Next y
Das rennt wie alle anderen Schnipsel am Ende in einen Makro-Fehler:
Der eingegebene Name ist ungültig.
Mögliche Gründe:
-Der Name beginnt nicht mit einem Buchstaben oder einem Unterstrich
-Der Name enthält ein Leerzeichen oder sonstige ungültige Zeichen
-Der Name steht in Konflikt mit einem integrierten Excel-Namen oder dem Namen eines anderen Objekts in der Arbeitsmappe
Wenn ich mit obigen Code in Einzelschritten debugge, durchläuft das Makro von hinten nach vorn die Namensliste bis zum Fehler. Die Variable n enthält seltsamerweise nicht den Namen des Namens sondern den Bezug. Beim Auftreten des Fehlers hat n den Wert "=NAME?".
Wenn ich den Namensmanager der bearbeiteten Datei an diesem Punkt aufrufe sind alle Namen (viele mit Referenzfehlern etc.) weg, einer ist übrig:
Name: Drucktitel
Wert: #BEZUG!
Bezug: ='H:\GVM\...\[Beispiel.xls]TestTab'!#BEZUG!
Ist das der den Fehler auslösende Name? Ein direktes Löschen dieses Namens per
ActiveWorkbook.Names("Print_Title").Delete
läuft jedenfalls auch in einen Makro-Fehler.
Es scheint so, dass alleine das "Ansprechen" dieses Namens zu einem Fehler führt.
Seltsamer weise klappt das Löschen aller Namen manuell im Namensmanger ohne Probleme. Alles markieren - Löschen - OK
Was kann ich tun?
Danke im Voraus.
Johannes