Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenblattname auslesen

Tabellenblattname auslesen
31.10.2005 17:35:13
Thomas
Hallo,
habe eine Mappe1 "Liste" Blattname "Bücher", der Name vom Blatt "Bücher"
ist auch in der Zelle A2. Nun möchte ich mit einen Macro Daten kopieren in
die Mappe2 "neue_Liste" mit den gleichen Blattnamen Bücher.
Also ich brauche einen Code der den Blattnamen von "Liste" "Bücher" A2 auslist
und in der Mappe "neue_Liste" das Blatt öffnet was er ausgelesen hat öffnet.
Möchte dieses Macro auf andere Blätter auch anwenden. Deswegen soll der Name immer ausgelesen werden.
Schwer zu beschreiben, hoffe es ist verständlich.
Gruß Thomas
Range("A1:E33").Select
Selection.Copy
Windows("neue_Liste.xls").Activate
Sheets.Name = Windows("Liste") = Range("A2")
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblattname auslesen
31.10.2005 18:22:38
Erich
Hallo Thomas,
meinst du das? strBlatt hätte im Beispiel den Wert "Bücher".

Sub Kopiere()
Dim strBlatt As String
strBlatt = Range("A2")
Sheets(strBlatt).Range("A1:E33").Copy _
Destination:=Workbooks("neue_Liste.xls").Sheets(strBlatt).Range("A1")
End Sub

Nebenbei:
...xxx.Select
...Selection.Copy
geht kürzer und besser mit
...xxx.Copy
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: funktioniert, brauche noch Schleife
31.10.2005 19:06:26
Thomas
Hallo Erich,
es funktioniert, Danke.
Kann Du noch eine Schleife machen,das Macro soll es bei allen Tabellen von der Mappe"Liste" machen außer die mit dem Namen "Romane" und "Krimis"
AW: funktioniert, brauche noch Schleife
31.10.2005 22:44:01
Erich
Hallo Thomas,
danke für deine Rückmeldung!
Mit einem Schleifchen drum sollten so der Bereich aus allen (außer den beiden genannten) Blättern kopiert werden:

Sub Kopiere()
Dim strWs As String, lngZeile As Long
For lngZeile = 2 To Cells(Rows.Count, 2).End(xlUp).Row
strWs = Cells(lngZeile, 2)
If strWs <> "Romane" And strWs <> "Krimis" _
And Not IsEmpty(Cells(lngZeile, 2)) Then
Sheets(strWs).Range("A1:E33").Copy _
Destination:=Workbooks("neue_Liste.xls").Sheets(strWs).Range("A1")
End If
Next lngZeile
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Hallo Erich, Danke fürs Schleifchen Ok
01.11.2005 00:02:45
Thomas
Hallo Erich,
funktioniert Super, nochmals Danke.
Gruß Thomas
AW: Tabellenblattname auslesen
31.10.2005 18:23:44
Matthias
Hallo Thomas,
ein wenig verworren...
Mal ein Ansatz:

Dim N As String
Dim ShQuelle As Worksheet, ShZiel As Worksheet
N = Workbooks("Liste.xls").Sheets("Bücher").Range("A2")
Set ShQuelle = Workbooks("Liste.xls").Sheets(N)
Set ShZiel = Workbooks("neue_Liste.xls").Sheets(N)

Gruß Matthias
Anzeige
OT: @Erich
31.10.2005 18:34:36
Matthias
Hallo Erich,
ist dir das auch schon aufgefallen, dass eine Frage lange unbeantwortet ist und dann im Minutenabstand 2 Antworten gleichtzeitig kommen?
Woran liegt das? Ist die Zeitqualität günstig? Müsste man mal einen Astrologen fragen.
(nicht ganz ernst gemeint;-)
Grüße aus Mittelfranken,
Matthias
Anzeige
OT: @Matthias G - AW
31.10.2005 18:50:24
Erich
Hallo Matthias,
das könnte man mal von einem Statistiker analysieren lassen: Wie groß ist die Chance, dass nach einer "Unbeantwortet"-Zeit mehrere Antworten innerhalb eines (kleinen) Zeitintervalls kommen?
Hat jede Frage ihre richtige Antwort-Zeit? Weiß nich ...
Bei mir war das so, dass ich gerade mit etwas fertig war und mal kurz in "Offene Fragen" geguckt habe.
Meinst du auch die Frage in diesem Thread mit "lange unbeantwortet"? Das passierte doch jetzt alles innerhalb einer einzigen Stunde...
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: OT: @Matthias G - AW
31.10.2005 18:53:14
Matthias
Hallo Erich,
naja, 50 Min. war nix und dann in zwei Minuten zwei Treffer
Wie beim Fußball manchmal, der Doppelschlag.
Gruß Matthias
AW:Brauche noch eine Schleife
31.10.2005 19:43:54
Thomas
Hallo Erich,
es funktioniert, Danke.
Kann Du noch eine Schleife machen,das Macro soll es bei allen Tabellen von der Mappe"Liste" machen außer die mit dem Namen "Romane" und "Krimis"
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblattnamen in Excel auslesen


Schritt-für-Schritt-Anleitung

Um den Excel Blattnamen auszulesen, kannst du ein einfaches VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne deine Excel-Datei.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  4. Kopiere den folgenden Code in das Modul:

    Sub Kopiere()
       Dim strBlatt As String
       strBlatt = Range("A2").Value
       Sheets(strBlatt).Range("A1:E33").Copy _
       Destination:=Workbooks("neue_Liste.xls").Sheets(strBlatt).Range("A1")
    End Sub
  5. Schließe den VBA-Editor.

  6. Führe das Makro aus, indem du ALT + F8 drückst und das Makro auswählst.

Dieser Code liest den Namen des Tabellenblattes aus der Zelle A2 und kopiert die Daten in die neue Liste.


Häufige Fehler und Lösungen

  • Fehler: "Blatt nicht gefunden"

    • Lösung: Überprüfe, ob der Blattname in der Zelle A2 korrekt geschrieben ist und dass das Blatt auch tatsächlich existiert.
  • Fehler: "Methoden oder Datenmitglied nicht gefunden"

    • Lösung: Stelle sicher, dass du auf die richtige Workbook-Referenz zugreifst. Die Workbooks müssen geöffnet sein.
  • Fehler: Kopieren funktioniert nicht

    • Lösung: Überprüfe, ob die Zielmappe ("neue_Liste.xls") geöffnet ist und dass das Zielblatt existiert.

Alternative Methoden

Wenn du den Excel Namen des Tabellenblattes auslesen möchtest, ohne VBA zu nutzen, kannst du auch folgende Formel verwenden:

=ZELLE("Dateiname";A1)

Diese Formel gibt den vollständigen Pfad und den Namen des aktiven Blattes zurück. Um nur den Blattnamen anzuzeigen, kannst du die Formel mit RECHTS und FINDEN kombinieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Excel Tabellenblattnamen auslesen kannst:

  1. Einzelnes Blatt auslesen:

    • Verwende das Makro aus der Schritt-für-Schritt-Anleitung, um den Namen eines spezifischen Blattes auszulesen und Daten zu kopieren.
  2. Mehrere Blätter in einer Schleife:

    • Wenn du Daten aus mehreren Blättern auslesen möchtest, kannst du eine Schleife nutzen, wie im folgenden Code:
    Sub KopiereAlle()
       Dim strWs As String
       Dim lngZeile As Long
       For lngZeile = 2 To Cells(Rows.Count, 2).End(xlUp).Row
           strWs = Cells(lngZeile, 2).Value
           If Not IsEmpty(strWs) Then
               Sheets(strWs).Range("A1:E33").Copy _
               Destination:=Workbooks("neue_Liste.xls").Sheets(strWs).Range("A1")
           End If
       Next lngZeile
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler durch nicht deklarierte Variablen zu vermeiden.

  • Benennungskonventionen: Halte dich an klare Benennungen für deine Variablen und Module, um die Lesbarkeit deines Codes zu verbessern.

  • Fehlerbehandlung: Implementiere On Error Resume Next, um Laufzeitfehler abzufangen, wenn bestimmte Blätter nicht existieren.


FAQ: Häufige Fragen

1. Wie kann ich den Blattnamen ohne VBA auslesen?
Du kannst die Funktion =ZELLE("Dateiname";A1) verwenden, um den Namen des aktiven Blattes zu erhalten.

2. Kann ich mehrere Blätter gleichzeitig auslesen?
Ja, du kannst eine Schleife in VBA verwenden, um über alle Blätter zu iterieren und die Namen auszulesen.

3. Wie kann ich den Namen des Tabellenblattes in eine Zelle schreiben?
Verwende die Formel =ZELLE("filename";A1) und bearbeite sie, um nur den Blattnamen zu extrahieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige