Tabellenblatt kopieren
#31
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.


Angehängte Dateien
.xls   Clever Beiträge Gast Jan 2025.xls (Größe: 768 KB / Downloads: 1)
.xlsx   WB Namen Test.xlsx (Größe: 32 KB / Downloads: 0)
Antworten Top
#32
Hi,

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.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#33
Hallöchen Gast123,

Du könntest übrigens auch die Druckansicht eines Threads kopieren und bei Dir einfügen, dann hast Du auch weniger Objekte Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Gast 123
Antworten Top
#34
Moin,

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:
  • HKindler
Antworten Top
#35
Hallo

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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste