Clever-Excel-Forum

Normale Version: Excel vba: Tabellen mit neuem Code-Namen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

leider komme ich mit meinem Problem mal wieder nicht weiter und hoffe auf Eure Hilfe.

In einer Arbeitsmappe befinden sich eine große Anzahl von Tabellenblättern, die leider vom Code-Namen her nicht fortlaufend nummeriert sind.
Also z.B. Tabelle11...Tabelle 13... Tabelle25 ....usw.

Leider finde ich auch nach langer Suche keine Lösung um die Code-Namen in einer Schleife wieder in ein fortlaufende Nummerierung von "Tabelle2" bis "abelleX" zu bekommen.
Könnt Ihr mir bitte dabei weiterhelfen und eine Lösung nennen?

Ich habe es mal so versucht.... klapp aber nicht:
Code:
Sub CodeNamen()
Dim objShp As Shape

Anzahl = ActiveWorkbook.Worksheets.Count
For I = 2 To Anzahl
  ActiveWorkbook.Sheets(I).Activate
  ThisWorkbook.VBProject.VBComponents(Sheets(I).CodeName).Name = "Tabelle" & I
Next I
End Sub

Das Teil steigt mit Fehlermeldung aus:
Die Methode "Name" für das Objekt _VBComponent ist fehlgeschlagen.

Für einen Tipp wäre ich dankbar!
Hallo Erich

ich denke es ist leichter die Blaetter neu zu sortieren anstatt sie umzubenennen.  Beide Code Beispiele findest du unten.

mfg Gast 123


Code:
Sub Sheets_umstellen()
Dim i, j, zahl1, zahl2
   For i = 1 To Worksheets.Count - 1
   For j = 1 To Worksheets.Count - 1
      zahl1 = Right(Worksheets(j).Name, 1)
      zahl2 = Right(Worksheets(j + 1).Name, 1)
      If zahl1 > zahl2 Then
         Worksheets(j).Move after:=Worksheets(j + 1)
      End If
   Next j
   Next i
End Sub

Sub Sheets_umbenennen()
Dim i, j, Txt as String
   For i = 1 To Worksheets.Count
      Txt = Worksheets(i).Name
      Worksheets(i).Name = Txt & "99"
   Next i
   
   For j = 1 To Worksheets.Count
      Worksheets(j).Name = "Tabelle" & j
   Next j
End Sub
[attachment=28426]

Hallo Erich

Im Trust Center - Makroeinstellungen

Gruss Guschti
Hallo Erich

Ich hab gerade meinen alten Code gefunden. Geht auch ohne Select.

Code:
Sub CodeNamen_umbenennen()
Dim i As Integer
For i = 1 To ActiveWorkbook.Worksheets.Count
    ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName).Name = "Tabelle" & i
    'Anstatt "Tabelle" kann es z.B. auch ein anderes Wort sein
Next
End Sub
Gruss Guschti
Vielen Dank Euch Beiden!
Werde es heute Abend ausprobieren.
Hallo nochmals,

die Tabellenblätter möchte ich nicht neu sortieren.
Die Sheet-Namen (Tabellenblatt-Reiter) sollen nicht umbenannt werden, aber der Code-Name des Sheets schon.

Das vorgestellte Makro mit "CodeNamen_umbenennen" bringt mir die gleiche Fehlermeldung wie ich in meiner ersten Anfrage beschrieben hatte.
Die Methode "Name" für das Objekt _VBComponent ist fehlgeschlagen.

Vielleicht hat noch jemand eine Lösungsmöglichkeit?

Nachtrag: Die Sicherheitseinstellungen für Makros stehen auf "Alle Makros aktivieren........."
Hallo Erich

Schau in meiner ersten Antwort.
Hast im Trust Center - Makroeinstellungen den Haken gesetzt?

Gruss Guschti
Hallo Guschti,

Haken ist gesetzt, ist so eingestellt (in Office 365) dass die Makros eigentlich funktionieren müssten.
Ich verstehe nicht warum das nicht funktioniert - hample fast täglich mit Makros durch die Gegend?
Hallo Erich

Wenn du eine Fehlermeldung bekommst, dann sind die Makros aktiviert.

Du könntest eine Kopie deiner Mappe erstellen. Ev. sensible Daten löschen, die Codes aber so lassen wie sie sind.
Diese Kopie dann hier hochladen.


Gruss werni
Hallo Gutschi,

ich finde nur komisch das der Eingestellte Code vom TE hier funktioniert ...
Zitat:
Code:
Sub CodeNamen_umbenennen()
Dim i As Integer
For i = 1 To ActiveWorkbook.Worksheets.Count
    ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName).Name = "Tabelle" & i
    'Anstatt "Tabelle" kann es z.B. auch ein anderes Wort sein
Next
End Sub


Gruß
Marcus
Seiten: 1 2