Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ungültige Namen in ActiveWorkbook.names

Ungültige Namen in ActiveWorkbook.names
31.07.2014 11:16:59
Johannes
Hallo,
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ungültige Namen in ActiveWorkbook.names
31.07.2014 11:31:01
Hajo_Zi
Hallo Johannes
lösche die Zeile Set n = ActiveWorkbook.Names(y)
oder

If InStr(UCase(n.Name), "#BEZUG!") > 0 Then
n.delete
end if

Du willst ja alle Namen löschen.

AW: Ungültige Namen in ActiveWorkbook.names
31.07.2014 12:20:32
Johannes
Hallo HAJO,
zunächst danke für die Rückmeldung.
Das einfache Weglassen der Zeile
Set n = ActiveWorkbook.Names(y)
führt zum Fehler: Objektvariable oder With-Blockvariable nicht festgelegt
Ich habe deinen Code nun verbaut wobei das mit "n.Name" nicht ging, daher mit "n.refersToLocal":
For y = ActiveWorkbook.Names.Count To 1 Step -1
Set n = ActiveWorkbook.Names(y)
If InStr(UCase(n.RefersToLocal), "#BEZUG!") > 0 Then
n.Delete
End If
Next y
Das führt zunächst zu keinem Fehler, Makro löscht alle Namen die "#BEZUG!" im Bezug stehen haben. Aber beim Drucktitel klappt das nicht. Er wird nicht gelöscht, es tritt auch kein Fehler auf. Wenn ich den Namensmanager nach Makro-Durchlauf öffne ist Drucktitel noch da obwohl wie in erstem Post geschrieben der Bezug von Drucktitel auch die Zeichenfolge "#BEZUG!" enthält.
Es wäre ja ok, wenn ein gültiger Drucktitel gesetzt werden könnte. Also wenn n.Name.Local = "Drucktitel" dann n.value = nothing und n.referstolocal = nothing. Geht das? Wie müsste das aussehen?
Danke

Anzeige
AW: Ungültige Namen in ActiveWorkbook.names
31.07.2014 13:38:07
Rudi
Hallo,
versuch mal:
Sub NamenRaus()
Dim n As Name
For Each n In ActiveWorkbook.Names
n.Delete
Next
End Sub

Gruß
Rudi

AW: Ungültige Namen in ActiveWorkbook.names
31.07.2014 14:15:30
Johannes
Sorry,
auch dieser Code liefert Makro-Abbruch mit Meldung:
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
Siehe auch Ursprungspost.

Anzeige
AW: Ungültige Namen in ActiveWorkbook.names
31.07.2014 15:04:10
Adis
Hallo
Wenn alle gelöscht werden sollen verwende ich gerne die Zahl 1 anstatt i
Er löscht somit immer den ersten Namen, bis die Liste leer ist.
Vorher lege ich mir aber gerne zuerst eine Liste aller Namen + Referenzen an
Darin kann man schön den ganzen Müll sehen. Diese Liste wird bei "#REF"(Bezug) Fehler
nicht immer mit der sichtbaren xlDialog Namens-Liste über die Menüleiste übereinstimmen!!
Gültige Wb-Namen kann man übrigens per Makro wieder in die Mappe zurückladen.
Manchmal muss man mehrfach löschen bis die ganze Liste leer ist. Ausprobieren.
On Error Resume Next
For i = 1 to ActiveWorkbook.Names.Count
ActiveWorkbook.Names(1).Delete '1 nicht i!!
Next i
Sheets("Tabelle1").Select
For i = 1 To ActiveWorkbook.Names.Count
Cells(i + 3, 2) = ActiveWorkbook.Names(i).Name
Cells(i + 3, 3) = " ' " & ActiveWorkbook.Names(i).RefersToLocal
Next i
Gruss Adis

Anzeige
AW: Ungültige Namen in ActiveWorkbook.names
01.08.2014 08:49:01
Johannes
Der erste Code Schnipsel läuft ebenfalls in den genannten Error sobald er Drucktitel erreicht. Wie gesagt allein das "Ansprechen" des Namens führt bereits zum Fehler.
Habe mal den 2. Code verwendet um die Namen auszulesen. Beim Drucktitel steht als Name
"_xlfn.IFERROR".
Sofort habe ich
ActiveWorkbook.Names("_xlfn.IFERROR").Delete
probiert.
Leider wieder der Fehler.
Weiß noch jemand Rat?
Kann man theoretisch Excel per VBA so fern steuern, dass man sozusagen mit der Maus auf Formeln klickt, alle Bereichsnamen markiert, dann Löschen anklickt und bestätigt?
Denn manuell funktioniert das ja.
Danke!

Anzeige
AW: Ungültige Namen in ActiveWorkbook.names
01.08.2014 15:41:00
fcs
Hallo Johannes,
es gibt auch interne unsichtbare Namen die Excel direkt vergibt.
Diese kann man zum Teil nicht löschen, weil sie angelegt werden, um die Kompatibilität zu älteren Excelversionen herzustellen. dazu gehört zum Beispiel auch die Funktion "_xlfn.IFERROR", Deutsch: WENNFEHLER.
Deshalb solltest du die ausgeblendeten nicht versuchen zu löschen.
Es gibt zwar auch weniger kritische Namen, wie zum Beispiel solche für den Autofilter, aber ich würde an deiner Stelle trotzdem die Finger davon lassen.
Ansonsten ist es meist günstiger, wenn man die Objekte vom Ende der AUflistung her löscht, also rückwärts zählend Richtung 1.
Gruß
Franz
Sub NamenLoeschen()
Dim wkb As Workbook
Dim objName As Name, intC As Integer
Set wkb = ActiveWorkbook
For intC = wkb.Names.Count To 1 Step -1
Set objName = wkb.Names(intC)
With objName
If .Visible = True Then
If InStr(1, .RefersToLocal, "#BEZUG!") > 0 Or InStr(1, .RefersTo, "#REF!") > 0 Then
.Delete
End If
Else
If Left(.Name, 6) = "_xlfn." Then
'Namen mit Verweise auf Excelfunktionen nicht löschen
ElseIf InStr(1, .Name, "!_FilterDatabase") > 0 Then
'Namen mit Verweis auf Autofilterbereiche nicht löschen
Else
.Delete
End If
End If
End With
Next
End Sub

Anzeige
AW: Ungültige Namen in ActiveWorkbook.names
01.08.2014 20:49:54
Adis
Hallo
ich weiss nicht wie ernst das Problem mit den Namen ist. Ob es sinnvoll ist es zu belassen.
Haben Dateien mich so genervt das ich nicht mehr weiter wusste, gab es unerwartete Fehler oder
unerklaerliche Phaenomene das Excel die Datei abbrach und zumachte gabs bei mir nur eine Lösung.
Datei verwerfen, eine neue Mappe anlegen, alles rüber kopieren, und mit neuer Mappe weitermachen.
Bei privaten kleinen Dateien kein Problem. Bei geschaftlichen Dateien muss man sorgfaeltig abwaegen!
Gruss Adis

208 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige