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

Forumthread: Text-inhalt als Befehl ausführen

Text-inhalt als Befehl ausführen
20.02.2015 22:36:48
Edi
Hallo,
ich möchte mir in einer Zelle Daten aus einer anderen Zelle, wechle aber aus einer anderen Excel-Datei (Mappe) kommt anzeigen lassen.
Dies ist soweit klar, auch wenn die andere Datei (Mappe9 nicht geöffnet ist, kann ich dies ja wie folgt:
=('\\Server\Tabellen\[Haushaltsbuch2014.xls]Januar'!$E$20)
Nun möchte ich jedoch nicht nur statisch auf die eine Datei: "Haushaltsbuch2014"
zugreifen, sondern durch eine Berechnung auch auf andere Excel-Datein (Mappen).
Mein Anstaz ist/war, mit einer Textverkettung mir die gewünschte Formale aufzubereiten,
z.B. wie hier:
=VERKETTEN("=('\\Server\Tabellen\[Haushaltsbuch";D40";.xls]Januar'!$E$20)")
In der Zelle D40 wird die Jahreszahl berechnet, die dann für das entsprechende Jahrbuch (Excel-Datei/Mappe) steht.
So erhalte ich zwar den Formel-Text, kann diesen aber nicht als Befehl ausführen lassen.
Gibt es dafür überhaupt eine Möglichkeit, oder ist mein Ansatz völlig falsch ?
Gruß Edi

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Text-inhalt als Befehl ausführen
20.02.2015 22:49:18
Daniel
Hi
was du hier meinst, sind nicht "Befehle" sondern "Zellbezüge" weil du dir Werte aus anderen Zellen holst.
Was du vorhast, funktioniert nicht.
Es gibt zwar die Möglichkeit, so wie du es vor hast einen zusammengesetzten Text als Zellbezug zu verwenden, dafür gibt es die Funktion INDIREKT.
in deinem Beispiel: =Indirekt(Verketten(...;...;...)
ABER:
das funktioniert nur mit Zellbezügen auf die eigene Datei oder auf geöffnete Dateien (dh ohne Pfad).
es funktioniert nicht auf andere Dateien, die geschlossen sind.
MS hat das so programmiert, wahrscheinlich weil hier zwei Performance-Bremsen zusammenkommen:
- Zellbezüge auf geschlossene Dateien sind sehr langsam
- die Funktion INDIREKT ist volatil, dh sie wird bei JEDER Änderung in Excel neu berechnet.
(normale Funktionen werden nur neu berechnet, wenn in den referenzierten Zellen eine Änderung erfolgt).
Ich hoffe du verstehst, dass das keine günstige kombination ist.
Gruß Daniel

Anzeige
AW: Text-inhalt als Befehl ausführen
20.02.2015 22:58:15
Edi
Hallo Daniel,
vielen Dank für Deine Antwort.
Ich mir das schon fast gedahct, das mein Ansatz so nicht funktioniert.
Zumindest nicht mit geschloßenen Datein.
Gut dann muss ich das wohl in VBA versuchen umzusetzen.
Wenn ich da auch nicht weiter komme muss ich mich hier nochmal melden ;-)
Gruß und Danke
Edi

Anzeige
Ergänzung: Verwende dafür eine SubProzedur, ...
21.02.2015 03:25:06
Luc:-?
…Edi,
denn alles Andere wie bpw Auslösung dieses Vorgangs per ZellFkt (um hier die Fkt INDIREKT zu ersetzen/erweitern), was über physische Entkopplung von Fkt und DateiÖffnen durchaus möglich wäre, ist 1. sehr kompliziert (bzw muss man auf API-Fktt ausweichen) und wird 2. mit jeder neuen XlVersion unzuverlässiger und instabiler, was auch der ursprüngliche HauptGrund dafür sein wird, warum weder INDIREKT noch die XLM-Fkt AUSWERTEN so konzipiert wurden. Evtl wäre etwas über die vbMethode CallByName zu erreichen, aber dafür muss eine ganze ObjektKaskade erzeugt wdn, weshalb ich das noch nie ernsthaft geprüft habe, zumal es hierbei auch zu Instabilitäten kommen kann. Ein ständig vorsichhin zitterndes Xl willst du ja sicher nicht haben… ;-]
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Ergänzung: Verwende dafür eine SubProzedur, ...
21.02.2015 03:48:23
Edi
Hallo und vielen Dank für Eure Teilnahme.
Im Moment verfolge ich die VBA-Variante mittels GetValue
Die ich soweit auch initialisiert habe.
Darauf aufbauend werde ich mir eine Schleife/Algorit. zusammebauen die mir alle Jahrgänge ausliest.
Das wird sicher noch haarig für mich, weil ich seit 15 Jahren nichts mehr programmiere.
Gruß Edi

Anzeige
Na, dann viel Erfolg, Edi! ;-) owT
21.02.2015 03:57:22
Luc:-?
:-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Text-Inhalt als Befehl in Excel ausführen


Schritt-für-Schritt-Anleitung

Um einen Text-Inhalt als Befehl in Excel auszuführen, beachte folgende Schritte:

  1. Verwendung von Zellbezügen: Du kannst Daten aus einer anderen Excel-Datei (Mappe) abrufen, auch wenn diese nicht geöffnet ist. Der grundlegende Befehl lautet:

    =('\\Server\Tabellen\[Haushaltsbuch2014.xls]Januar'!$E$20)
  2. Dynamische Zellbezüge mit INDIREKT: Um dynamisch auf verschiedene Dateien zuzugreifen, kannst du die Funktion INDIREKT verwenden. Beachte jedoch, dass diese nur mit offenen Dateien funktioniert. Der Befehl könnte folgendermaßen aussehen:

    =INDIREKT(VERKETTEN("('\\Server\Tabellen\[Haushaltsbuch"; D40; ".xls]Januar'!$E$20)"))
  3. VBA verwenden: Wenn du mit geschlossenen Dateien arbeiten möchtest, bleibt die Möglichkeit, VBA zu verwenden. Du kannst eine SubProzedur schreiben, um den gewünschten Wert abzurufen.


Häufige Fehler und Lösungen

  • Fehler: Excel Formel nicht ausführen: Wenn die Formel nicht ausgeführt wird, stelle sicher, dass die referenzierten Dateien geöffnet sind, wenn du INDIREKT verwendest.

  • Lösung: Nutzung von VBA: Um Befehle in Excel auszuführen, die auf geschlossene Dateien zugreifen, ist das Schreiben eines VBA-Skripts oft die bessere Wahl. Hier kannst du die GetValue Methode verwenden.


Alternative Methoden

  • Verwendung von API-Funktionen: Wenn du komplexere Datenoperationen benötigst, kannst du API-Funktionen in VBA nutzen. Diese erfordern jedoch fortgeschrittene Kenntnisse.

  • Verknüpfungen: Eine weitere Möglichkeit ist, Verknüpfungen zwischen den Excel-Dateien zu erstellen, sodass du die Daten direkt abrufen kannst, ohne die Datei manuell zu öffnen.


Praktische Beispiele

  1. Daten aus einer anderen Mappe abrufen:

    =INDIREKT("'[Haushaltsbuch2014.xls]Januar'!$E$20")
  2. Dynamische Verknüpfungen: Angenommen, die Jahreszahl steht in Zelle D40:

    =INDIREKT(VERKETTEN("('\\Server\Tabellen\[Haushaltsbuch"; D40; ".xls]Januar'!$E$20)"))

Tipps für Profis

  • Vermeide volatile Funktionen: Funktionen wie INDIREKT können die Leistung deines Excel-Dokuments beeinträchtigen, da sie bei jeder Änderung neu berechnet werden. Nutze sie nur, wenn nötig.

  • Debugging in VBA: Wenn du mit VBA arbeitest, nutze die Debugging-Tools von Excel, um sicherzustellen, dass deine Skripte korrekt funktionieren.


FAQ: Häufige Fragen

1. Kann ich eine Excel Formel ausführen, die auf eine geschlossene Datei verweist?
Nein, die Funktion INDIREKT funktioniert nur mit offenen Dateien. Für geschlossene Dateien musst du VBA verwenden.

2. Welche Excel-Version benötige ich für diese Funktionen?
Die beschriebenen Funktionen sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige