08.01.2025, 15:14 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2025, 15:21 von Gast 123.)
Hallo Helmut
"ike könnte dir knutschen", du hast gerade ein Phänomen gelöst, das mir nicht bewusst war!
Schau bitte mal auf die Zeilenlänge, ich habe Dateien mit 65536 Zeilen, alte Ecel 2003 Dateien. Durch deinen Hinweis wollte ich dir das Einfügen demonstrieren, und erkannte den Unterschied. Bei der jetzt geänderten neuen xlsm Version für Clever Forum findet der Effekt NICHT mehr statt.
Bei Dateien die ich von Excel 2003 auf xlsm -umformatiert- habe bleibt es beim alten. Mit 65536 Zeilen! Die Zeilenlänge wird beim umformatieren nicht geändert!
mfg Gast 123 Nachtrag offen bleibt aber die Frage wann und wo man Müll aus dem Internet herunterlädt?? Sieht man ja nicht immer.
ja klar, man bekommt einen Haufen Müll mit rein z.B. geschützte Leerzeichen oder sonstige unsichtbare Zeichen innerhalb eines Strings, Links, Dropdowns, Bilder, sonstige Shapes (oft auch mit 1x1 Pixel Größe), sonstige unsichtbare oder winzige Dinge, etx. pp. Aber dass dabei ein Name angelegt wird, das habe ich noch nicht erlebt.
Namen entstehen auch durch das Kopieren von Zellbereichen und/oder Tabellenblättern. Häufig auch durch Magie und fast nie durch Anwender. Am magischsten verhalten sich dabei geheime Mappen, bei denen Tippfehler kategorisch auszuschließen sind.
Viele Grüße derHöpp
Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28 • HKindler
da mich das Thema auch noch interesssiert habe ich mal ein "intelligentes Makro" geschreiben. Es könnte Dieter auch gefallen. Gehört in "DieseArbeitsmappe" und wird bei BeforeClose aktiviert. Alle #BEZUG Fehler werden sofort gelöscht, Print_Area gezählt. Gibt es keine Namen Code Ende.
Gibt es weitere Namen kann man sie in einer Tabelle auflisten und auf Wunsch einzeln löschen lassen. Der Vorteil ist, das man sofort sieht ob man sich an dem Tag "Müll" in die Datei kopiert hat. Erkennt sofort woher der kommt. Kann Wiederholungsfälle vermeiden.
mfg Gast 123
Code:
' 9.1.2025 Gast 123 für Clever Forum
'Prüf- und Löschprogramm für unerwünschte Wb-Namen 'alle #BEZUG Fehler werden vorab gelöscht!! 'alle Print_Area bleiben in der Datei erhalten 'die übrigen Namen kann man auflisten und löschen 'Die Namen werden zum löschen einzeln abgefragt.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim p As Integer, Zahl As Long If ThisWorkbook.Names.Count = 0 Then Exit Sub On Error Resume Next Zahl = ThisWorkbook.Names.Count '1.Schleife löscht alle #BEZUG Fehler!! For j = Zahl To 1 Step -1 Txt = ThisWorkbook.Names(j).Name If InStr(Txt, "#REF") Or InStr(Txt, "#BEZUG") Then ThisWorkbook.Names(j).Delete ElseIf InStr(Txt, "Print_Area") Then p = p + 1 'Print nicht löschen!! End If Next j
Zahl = ThisWorkbook.Names.Count If Zahl - p = 0 Then Exit Sub
ok = MsgBox(Zahl & " Namen im Blatt auflisten??", vbOKCancel) If ok = vbCancel Then Exit Sub
'2.Schleife alle vorhandenen Namen auf For j = 1 To Zahl Sheets("Tabelle1").Cells(j + 2, 2) = j Sheets("Tabelle1").Cells(j + 2, 3) = ThisWorkbook.Names(j).Name Sheets("Tabelle1").Cells(j + 2, 4) = " ' " & ThisWorkbook.Names(j).RefersTo Next j
ok = MsgBox(Zahl & " Namen im Blatt - Löschen??", vbOKCancel) If ok = vbCancel Then Exit Sub
'3.Schleife löscht alle unerwünschten Namen For j = Zahl To 1 Step -1 ok = MsgBox(ThisWorkbook.Names(j).Name & " " & ThisWorkbook.Names(j).RefersTo, vbYesNo) If ok = vbYes Then ThisWorkbook.Names(j).Delete Next j
Zahl = ThisWorkbook.Names.Count If Zahl - p = 0 Then MsgBox "Alle Wb-Namen außer Print_Area gelöscht!" Else MsgBox Zahl & " Wb-Namen sind noch in dieser Datei" End If End Sub