Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
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

Tabellenblätter (Monat) umbennen

Tabellenblätter (Monat) umbennen
14.01.2020 08:54:09
Andreas
Hallo liebe Forumer,
ich habe mal wieder ein kleines Problem und bin auf eure Expertise angewiesen.
Ich habe einige Excel-Dateien. Diese enthalten jeweils ca. 16 Blätter.
Nach dem 4. Blatt kommen bei jeder Datei Blätter mit Monatsnamen (Januar, Februar, April) etc.
Wie kann ich diese jeweils umbennen? (z.B. aus April soll 2019-April werden.)
Würde das gerne automatisieren, da es sonst ewig dauert.
Mit Hilfe des Forums habe ich vor einiger Zeit ein Makro erstellt, wo ich alle betroffenen Exceldateien
auswählen und drucken kann. Evtl. kann man das hier umschreiben.
Hier der Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim objWorkbook As Workbook
Dim lngIndex As Long
Call Hide
Application.ScreenUpdating = False
For lngIndex = 0 To ListBox1.ListCount - 1
With ListBox1
If .Selected(pvargIndex:=lngIndex) Then
Set objWorkbook = Workbooks.Open(Filename:= _
.List(pvargIndex:=lngIndex, pvargColumn:=1) & _
.List(pvargIndex:=lngIndex, pvargColumn:=0))
With objWorkbook
Call .Worksheets(.Worksheets.Count).Select
'Application.Run ("'" & .Name & "'!Daten_holen_Bewertung_Vorjahre")
'Call Run(Macro:=.Name & "!NeuesBlatt")
Call .Worksheets(.Worksheets.Count).PrintOut
Call .Close(SaveChanges:=False)
End With
End If
End With
Next
Application.ScreenUpdating = True
MsgBox "Fertig !"
CommandButton2.Value = True
End Sub

Private Sub CommandButton2_Click()
Call Unload(Object:=Me)
End Sub

Private Sub UserForm_Initialize()
Const FOLDER_PATH As String = "\\NAS-2T\Bau\Projekte\Verschoben auf Server\0005  _
Baustellenbewertungen\" 'anpassen !!!
Dim lngYear As Long
Dim strFileName As String
For lngYear = 2016 To 2030
strFileName = Dir$(PathName:=FOLDER_PATH & CStr(lngYear) & "\*.xlsm")
Do Until strFileName = vbNullString
With ListBox1
Call .AddItem(pvargItem:=strFileName)
.List(.ListCount - 1, 1) = FOLDER_PATH & CStr(lngYear) & "\"
.Selected(pvargIndex:=.ListCount - 1) = True
End With
strFileName = Dir$
Loop
Next
End Sub
Vielen Dank vorab für eure Hilfe.
Gruß
Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ansatz
14.01.2020 09:15:32
Fennek
Hallo Andreas,
die gezeigten Codes kann ich nicht in Verbindung zum Text bringen. Ein Umbennen der Sheets sollte so gehen:

dim WB as Workbook
Set WB = thisworkbook
With wb
for i = 5 to wb.sheets.count
sheets(i).name = "2019-" & sheets(i).name
next i
WB.save 1
'WB.close 'nur in der Schleife über alle WB's
end with
Es fehlt noch eine Schleife über alls Workbook, ggf eine Prüfung.
mfg
AW: Ansatz
14.01.2020 09:52:41
Andreas
Hallo Fennek,
ich lade hier mal die Musterdatei hoch woraus mein Code stammt.
Dieser lädt über eine Listbox(Auswahl) die zu bearbeitenden Exceldateien.
Vielleicht kannst du mir sagen wo ich deinen Code genau einsetze?
Ich habe leider nicht soll viel Ahnung von VBA.
https://www.herber.de/bbs/user/134381.xlsm
Danke vorab.
Gruß
Andreas
Anzeige
AW: Tabellenblätter (Monat) umbennen
14.01.2020 09:40:10
Jürgen
Hallo Andreas,
hier ist noch ein Vorschlag, bei dem die Tabellenblätter nach dem Jahr des Verzeichnisses umbenannt werden.
Private Sub CommandButton1_Click()
Dim objWorkbook As Workbook
Dim lngIndex As Long
Dim strYear As String, strPath
Dim wksTmp As Worksheet
Call Hide
Application.ScreenUpdating = False
For lngIndex = 0 To ListBox1.ListCount - 1
With ListBox1
If .Selected(pvargIndex:=lngIndex) Then
Set objWorkbook = Workbooks.Open(Filename:= _
.List(pvargIndex:=lngIndex, pvargColumn:=1) & _
.List(pvargIndex:=lngIndex, pvargColumn:=0))
With objWorkbook
strPath = Split(.Path, "\")
strYear = strPath(UBound(strPath))
For Each wksTmp In .Worksheets
If wksTmp.CodeName > "Tabelle3" Then
wksTmp.Name = strYear & "-" & wksTmp.Name
End If
Next wksTmp
End With
End If
End With
Next
Application.ScreenUpdating = True
MsgBox "Fertig !"
CommandButton2.Value = True
End Sub
Im Unterschied zu Fenneks Vorschlag verwende ich gerne den Codenamen der Tabellenblätter.
Diese sind unabhängig von der Reiterposition und können durch Anwender nur schwer geändert werden.
Gruß
Jürgen
Anzeige
AW: Tabellenblätter (Monat) umbennen
14.01.2020 09:58:16
Andreas
Hallo Jürgen,
danke für deine Antwort.
Kurze Frage:
Die Blätter müssen alle mit 2019- statt nach dem Jahr des Verzeichnisses geändert werden.
Der Codename "Tabelle3" ist dann das Blatt 4? Oder muss ich hier Tabelle4 eintragen?
Danke vorab.
Gruß
Andreas
AW: Tabellenblätter (Monat) umbennen
14.01.2020 10:02:54
Jürgen
Hallo Andreas,
"Tabelle3" ist wenn die Tabellen noch nicht umbenannt wurden die Tabelle3.
Also wenn du erst Tabelle5 umbenennen willst, musst du auf > "Tabelle4" ändern.
Wenn alle Fix den Wert "2019-" haben sollen, einfach kurz abändern.
Private Sub CommandButton1_Click()
Dim objWorkbook As Workbook
Dim lngIndex As Long
Dim strYear As String, strPath()
Dim wksTmp As Worksheet
Call Hide
Application.ScreenUpdating = False
For lngIndex = 0 To ListBox1.ListCount - 1
With ListBox1
If .Selected(pvargIndex:=lngIndex) Then
Set objWorkbook = Workbooks.Open(Filename:= _
.List(pvargIndex:=lngIndex, pvargColumn:=1) & _
.List(pvargIndex:=lngIndex, pvargColumn:=0))
With objWorkbook
'                    strPath = Split(.Path, "\")
'                    strYear = strPath(LBound(strPath) - 1)
For Each wksTmp In .Worksheets
If wksTmp.CodeName > "Tabelle3" Then
wksTmp.Name = "2019-" & wksTmp.Name
End If
Next wksTmp
End With
End If
End With
Next
Application.ScreenUpdating = True
MsgBox "Fertig !"
CommandButton2.Value = True
End Sub
Gruß
Jürgen
Anzeige
AW: Tabellenblätter (Monat) umbennen
14.01.2020 10:52:27
Andreas
Hallo Jürgen,
danke schonmal. Wir kommen der Sache näher.
Den Code strPath = Split(.Path, "\") musste ich raus nehmen, da Typenunverträglichkeit.
Er nennt aber alle Blätter um. Auch die ersten 4. Die Namen der ersten 4 sind bei jeder Datei gleich, und zwar "Datenblatt", Kontrollblatt, "Aufträge", "Basisblatt". Kann man die aussen vor lassen.
Alle anderen Blätter können umgenannt werden.
Danke für deine Mühen.
 With ListBox1
If .Selected(pvargIndex:=lngIndex) Then
Set objWorkbook = Workbooks.Open(Filename:= _
.List(pvargIndex:=lngIndex, pvargColumn:=1) & _
.List(pvargIndex:=lngIndex, pvargColumn:=0))
With objWorkbook
'strPath = Split(.Path, "\")
'strYear = strPath(LBound(strPath) - 1)
For Each wksTmp In .Worksheets
If wksTmp.CodeName > "Basisblatt" Then
wksTmp.Name = "2019-" & wksTmp.Name
End If
Next wksTmp
Call .Close(SaveChanges:=True)
End With
End If
End With
Gruß
Andreas
Anzeige
AW: Tabellenblätter (Monat) umbennen
14.01.2020 11:15:15
Jürgen
Hallo Andreas,
der Fehler beim strPath ist die "()" beim Dim.
Diese hatte ich bei meinem Test rausgenommen. Sorry mein Fehler.
Ist aber auch egal, wenn die "2019-" Fest geändert werden sollte.
Den wksTmp.Codenamen solltest Du nicht in "Basisblatt" ändern. (AUSSER du hast dies im VBA-Entwicklungstool gemacht!)
Der Codename ist nicht der Name der im Reiter von Excel steht. Sondern der, der im VBA-Entwicklungstool beim Objekt/Tabelle steht.
Einfach noch mal mit folgendem Code ausführen:
If wksTmp.CodeName > "Tabelle3" Then
Das sollte funktionieren, so langen die ersten 4 Tabellenblätter auch die zuerst angelegten Tabellenblätter sind.
Mit den Blattnamen geht dies so lange gut, bis jemand die Blätter umbenennt.
Ansonsten würde ich dies so abfragen:
Select Case wksTmp.Name
Case "Datenblatt", "Kontrollblatt", "Aufträge", "Basisdaten"
Case Else
wksTmp.Name = "2019-" & wksTmp.Name
End Select

anstelle von
 If wksTmp.CodeName > "Tabelle3" Then
wksTmp.Name = "2019-" & wksTmp.Name
End If

einsetzten.
Gruß
Jürgen
Anzeige
AW: Tabellenblätter (Monat) umbennen
14.01.2020 11:29:07
Andreas
Hallo Jürgen,
mit der Case-Anweisung funktioniert es super!
Danke für deine Hilfe.
Eine kleine Frage bitte noch. Ist es möglich, dass ich das letzte Blatt in der jeweiligen Tabelle nicht umnenne. Sprich der Code soll dann vorher stoppen.
Danke nochmal.
Gruß Andreas
AW: Tabellenblätter (Monat) umbennen
14.01.2020 12:22:54
Andreas
Hallo Jürgen,
hab es elber hinbekommen.
Danke nochmal für deine schnelle Hilfe zu meinen Problemchen.
Gruß
Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige