Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

andere Mappe Tabellenblatt mit Codename ansprechen

Forumthread: andere Mappe Tabellenblatt mit Codename ansprechen

andere Mappe Tabellenblatt mit Codename ansprechen
Reinhard
Hallo Wissende,
ich habe gegoogelt, das hiesige Archiv benutzt und rumprobiert. Ergebnislos.
Bzw. Ergebnis ist, ich kam nicht weiter.
ich möchte mit einem direkten Befehl/Codezeile z.B. so
Workbooks("Mappe2").Tabelle3.Range("A1").Value="Huhu"
etwas in die Zelle eintragen, das geht so nicht.
Frage: Geht es überhaupt "direkt"?
Eine alternative Lösung mit einer For-Schleife alle Sheets in Mappe2 durchgehen und wenn
der Codename stimmt da was eintragen hab ich mir schon gebastelt.
Gruß ^Danke
Reinhard
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: andere Mappe Tabellenblatt mit Codename ansprechen
12.06.2012 06:52:43
Erich
Hi Reinhard,
Workbooks("Mappe2") gibt ein Workbook zurück.
Dahinter - nach dem Punkt - kann eine Eigenschaft oder eine Methode von Workbook stehen.
"Tabelle3" ist aber keine Eigenschaft von Workbook, sondern der Name eines Objekts.
"Sheets" dagegen ist eine Eigenschaft von Workbook.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: andere Mappe Tabellenblatt mit Codename ansprechen
12.06.2012 07:07:03
Matthias
Hallo
Ich denke da fehlt auch das .xls
Workbooks("Zielmappe.xls").Sheets("Tabelle3").Range("A1").Value = "Hallo Reinhard"
Sonst kommt Laufzeitfehler9
Gruß Matthias
neue Mappe ansprechen
12.06.2012 07:22:37
Erich
Hi Matthias,
nein - da fehlt wohl das ".xls" doch nicht.
Leg mal (ob per Hand oder mit VBA, ist egal) eine neue Mappe an und schau dir deren Namen an.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
hab ich doch getestet ...
12.06.2012 07:59:54
Matthias
Hallo Erich
Hab ich doch getestet, sonst hätt ich es nicht geschrieben (ich teste eigentlich fast immer)
Ich habe eine Datei Zielmappe.xls angelegt (also auch bereits gespeichert-nach dem speichern geschlossen und neu geöffnet)
Aus der Datei MyMap1.xls starte ich aus einem Modul den Code.
Beide Dateien sind nun geöffnet.
Es kommt ohne .xls der Laufzeitfehler9 (XL2000 & XL2007).
jedoch mit .xls klappt es ohne Probleme.
Wobei Zielmappe.xls im gleichen Verzeichnis liegt und geöffnet ist.
Aber auch nach dem Verschieben von "Zielmappe.xls" klappt das einwandfrei.
Logischerweise beide Dateien in einer Instanz.
getestet mit XL2000 & XL2007
Gruß Matthias
Anzeige
ja aber...
12.06.2012 08:12:26
Erich
Hi Matthias,
leg mal (ob per Hand oder mit VBA, ist egal) eine neue Mappe an und schau dir deren Namen an,
ohne diese Mappe zu speichern.
Dann kannst du die in VBA mit Workbooks("Mappe3") o.ä. ansprechen - ohne ".xls".
(Ob sie später vielleicht mal eine xls, xlsx oder xlsm werden wird, weiß man ja noch gar nicht...)
Natürlich - bei einer bereits gespeicherten Mappe gehört die Endung (z. B. "xls") zum Dateinamen.
Das hast du getestet.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
getestet und ok ...
12.06.2012 09:01:53
Matthias
Hallo Erich
Habs getestet und es funktioniert natürlich so wie Du beschreibst auch.
Ich denke Reinhard hat sich eh mehr auf den CodeNamen der Tabelle bezogen.
Also warten wirs mal ab, bis er sich meldet.
Eine Alternativlösung hat er sich ja schon selbst gebastelt, wie er erwähnte.
Gruß Matthias
Anzeige
Geht es überhaupt "direkt"?
12.06.2012 09:06:24
Rudi
Hallo,
geht definitiv nicht.
Gruß
Rudi
Rückmeldung
12.06.2012 11:44:42
Reinhard
Hallo,
Rudi hat es auf den Punkt gebracht, das wollte ich wisen, ob es geht oder nicht.
Nur für das Archiv nachstehend mein Ersatzcode.
Im Objektkatalog blicke ich nicht so durch um daraus so eine Auskunft ablesen zu können wenn das ginge.
Bei der hiesigen Recherche stieß ich auf Code der in einer Schleife Excelnamen und Codenamen
über den Index anspricht, das ging mit .VBComponents.
Aus der Ecke hab ich evtl. auf einen Einzeiler gehofft.
Dem ist wohl nicht so, okay.
Danke für eure Hilfe(n).
Ja, Mappe2 ist eine ungespeicherte neue Mappe.
Gruß
Reinhard
Option Explicit
Sub Test()
Workbooks("Mappe2").Worksheets(TabellenIndex(Workbooks("Mappe2"), _
"Tabelle1")).Cells(1, 4).Value = "huhu"
End Sub
Function TabellenIndex(ByRef wkb As Workbook, ByVal strCodename As String) As Integer
Dim wks As Worksheet
For Each wks In wkb.Worksheets
If wks.CodeName = strCodename Then
TabellenIndex = wks.Index
Exit Function
End If
Next wks
End Function

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt in einer anderen Mappe über Codename ansprechen


Schritt-für-Schritt-Anleitung

Um ein Tabellenblatt in einer anderen Mappe über den Codename anzusprechen, kannst du folgenden VBA-Code verwenden. Dieser Code zeigt dir, wie du den Codename eines Arbeitsblatts ermitteln und nutzen kannst.

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject (deine Datei)“ klickst und „Einfügen“ > „Modul“ wählst.
  3. Füge den folgenden Code in das Modul ein:
Option Explicit

Sub Test()
    Workbooks("Mappe2").Worksheets(TabellenIndex(Workbooks("Mappe2"), "Tabelle1")).Cells(1, 4).Value = "huhu"
End Sub

Function TabellenIndex(ByRef wkb As Workbook, ByVal strCodename As String) As Integer
    Dim wks As Worksheet
    For Each wks In wkb.Worksheets
        If wks.CodeName = strCodename Then
            TabellenIndex = wks.Index
            Exit Function
        End If
    Next wks
End Function
  1. Ersetze "Mappe2" und "Tabelle1" durch die entsprechenden Namen deiner Arbeitsmappe und deines Arbeitsblattes.
  2. Führe das Makro Test aus, um den Wert in die Zelle A1 deines Zielarbeitsblatts einzutragen.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 9 (Index außerhalb des gültigen Bereichs)
    Lösung: Stelle sicher, dass die Arbeitsmappe, die du ansprechen möchtest, geöffnet ist und der Name korrekt ist. Denke daran, dass du den vollständigen Namen einschließlich der Dateiendung verwenden musst, wenn die Mappe bereits gespeichert ist.

  • Fehler: Keine Rückgabe des Codenames
    Lösung: Überprüfe, ob du den Codename korrekt eingegeben hast. Der Codename kann im VBA-Editor unter „Eigenschaften“ für das Arbeitsblatt gefunden werden.


Alternative Methoden

Eine alternative Methode, um auf ein Tabellenblatt zuzugreifen, besteht darin, die Sheets-Eigenschaft zu verwenden. Hier ein Beispiel:

Sub AlternativeMethode()
    Workbooks("Mappe2").Sheets("Tabelle1").Range("A1").Value = "Hallo"
End Sub

Diese Methode erfordert jedoch, dass du den Namen des Arbeitsblatts anstelle des Codenames verwendest.


Praktische Beispiele

Ein einfaches Beispiel, wie du ein Tabellenblatt über den Codename ansprechen kannst:

Sub BeispielCodename()
    Dim wb As Workbook
    Set wb = Workbooks("Mappe2")
    wb.Worksheets("Tabelle1").Cells(1, 1).Value = "Test"
End Sub

In diesem Beispiel wird die Zelle A1 des Arbeitsblatts „Tabelle1“ in der Mappe „Mappe2“ mit dem Text „Test“ gefüllt.


Tipps für Profis

  • Nutze den Codename für eine stabilere Programmierung, da dieser nicht geändert werden kann, während der Name des Arbeitsblatts jederzeit geändert werden kann.
  • Verwende die Option Explicit Anweisung, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler im Code zu vermeiden.
  • Füge Fehlerbehandlungsroutinen in deinen Code ein, um unerwartete Laufzeitfehler elegant zu behandeln.

FAQ: Häufige Fragen

1. Kann ich auch auf ein nicht geöffnetes Workbook zugreifen?
Nein, um auf ein Arbeitsblatt in einer anderen Mappe zuzugreifen, muss das Workbook geöffnet sein.

2. Was ist der Unterschied zwischen Codename und Blattname?
Der Codename ist der Name, der im VBA-Editor verwendet wird und nicht verändert werden kann. Der Blattname ist der Name, den du im Excel-Arbeitsblatt siehst und der jederzeit geändert werden kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige