Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1824to1828
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

Daten zusammenführen - Blatt benennen

Daten zusammenführen - Blatt benennen
19.04.2021 13:10:22
Foradh
Hallo zusammen,
ich verwende momentan folgenden Code um aus verschiedene Exceldateien alle Tabellenblätter in eine Datei zusammenzuführen.
<pre>Sub TabellenblaetterZusammenfuehren()
Dim vntPfadUndDateiNamen As Variant
Dim strPfadUndDatei As String
Dim lngi As Long
Dim wbkMappe As Workbook
Dim wksTabelle As Worksheet
Dim wbkZiel As Workbook
Set wbkZiel = ThisWorkbook
vntPfadUndDateiNamen = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Wählen Sie die Dateien für die Zusammenführung aus!", MultiSelect:=True)
If VarType(vntPfadUndDateiNamen) = vbBoolean Then
MsgBox "Keine Daten gewählt"
Else
For lngi = LBound(vntPfadUndDateiNamen) To UBound(vntPfadUndDateiNamen)
strPfadUndDatei = vntPfadUndDateiNamen(lngi)
Set wbkMappe = Application.Workbooks.Open(strPfadUndDatei)
For Each wksTabelle In wbkMappe.Worksheets
wksTabelle.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
Next
wbkMappe.Close False
Next
End If
End Sub</pre>
Nun würde ich den Code gerne ändern, so dass die zusammengeführten Tabellenblätter den Namen der entsprechenden Datei erhalten.
Bsp.
Es sollen 2 Dateien mit mehreren Tabellenblättern zusammengefügt werden (A.xlsx und B.xlsx)
Die zusammengeführte Excel-Datei soll nun alle Tabellenblätter von A.xlsx in A(1); A(2)... und alle Tabellenblätter von B.xlsx in B(1);B(2)...umbenennen.
Könnt ihr mir hierbei helfen?
Vielen Dank im Voraus.
Foradh

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten zusammenführen - Blatt benennen
19.04.2021 13:17:18
Piet
Hallo
in einem schönen Beispiel von Nepumuk sah ich das er den neuen Tabellen Namen an den Copy Befehlt anhaengt! Einfach so:
wksTabelle.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count).Name = "Hier dein neuer Tabellen Name"
Wenn der neue Name lang und kompliziert ist kannst du ihn vorher in eine Text Variable laden und .Name = NewName anhaengen.
mfg Piet
AW: Daten zusammenführen - Blatt benennen
19.04.2021 13:18:48
Dennis
Das kannst du in dem du z.B. den Befehl ActiveSheet.Name = "Blub"~f~ anwendest.
Auslesen kannst du den Namen der Datei z.B. mit ~f~Worksheets(Tabelle1).Range("A1") = ActiveWorkbook.Name
Pass nur auf mit "This-" und "Active-" -Workbook.
Wenn du mit mehreren Dateien Arbeitest, kann es schnell zu verwirrung führen im Code.
Anzeige
AW: Daten zusammenführen - Blatt benennen
19.04.2021 14:53:10
Foradh
Hallo zusammen,
vielen Dank für eure schnellen Antworten. Leider habe ich es nicht geschafft den Code entsprechend einzubauen.
Das Anhängen von Name wie von .Name "xxx" führt zu einem Fehler. Zusätzlich sollen die Tabellennamen ja aus dem Dateinamen generiert werden.
Könnt ihr mir hier nochmal unter die Arme greifen?
Beste Grüße
Foradh
AW: Daten zusammenführen - Blatt benennen
19.04.2021 15:34:43
Piet
Hallo
habe es gerade in einer Testdatei getestetç Dort klappte es so: - man muss aber beachten das der Name nicht doppelt vorkommen darf!
wksTabelle.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
ActiveSheet.Name = "Test 22"
mfg Piet
Anzeige
AW: Daten zusammenführen - Blatt benennen
20.04.2021 10:40:41
Foradh
Hi Piet,
besten Dank es funktioniert alles.
<pre>Sub TabellenblaetterZusammenfuehren()
Dim vntPfadUndDateiNamen As Variant
Dim strPfadUndDatei As String
Dim lngi As Long
Dim wbkMappe As Workbook
Dim wksTabelle As Worksheet
Dim wbkZiel As Workbook
Set wbkZiel = ThisWorkbook
Dim counter As Integer
counter = 0
vntPfadUndDateiNamen = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Wählen Sie die Dateien für die Zusammenführung aus!", MultiSelect:=True)
If VarType(vntPfadUndDateiNamen) = vbBoolean Then
MsgBox "Keine Daten gewählt"
Else
For lngi = LBound(vntPfadUndDateiNamen) To UBound(vntPfadUndDateiNamen)
strPfadUndDatei = vntPfadUndDateiNamen(lngi)
Set wbkMappe = Application.Workbooks.Open(strPfadUndDatei)
For Each wksTabelle In wbkMappe.Worksheets
wksTabelle.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
ActiveSheet.Name = Left(wbkMappe.Name, 29) & counter
counter = counter + 1
Next
wbkMappe.Close False
Next
End If
Dim wks As Worksheet
For Each wks In Worksheets
If Application.CountA(wks.Cells) = 0 And Worksheets.Count > 1 Then
Application.DisplayAlerts = False
wks.Delete
Application.DisplayAlerts = True
End If
Next
End Sub</pre>
Immer wieder klasse hier!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige