in formeln variable datei- und komponenten bezeichner verwenden

gibt es eine möglichkeit aus einem zellenwert/stringkonstante über eine funktion in einer formel eine datei oder komponente anzusprechen?
Bsp: in zelle a1 wird ein pfadname zu einer datei eingegeben als wert der zelle (text bzw. stringkonstante), nun soll in zelle b1 mittels einer funktion ein knopf entstehen, welcher in der datei, dessen pfadname in a1 steht, eine komponente mit daten versorgt, bzw daraus entnimmt.

ich weiß, dass man durch "Index('Dateipad'!Komponentenname!Zelle ...) auf die Komponente eines ragtime documents zugreifen kann, aber scheinbar darf diese datei nicht variabel sein..
ich hatte mir das in etwa so vorgestellt:
"Knopf('hallo';Index(Text(DateipfadZelle)!DB_Debitoren!B:B;Auswahl(Text(DateipfadZelle)!DB_Debitoren!A:A;LfdZelle=Text(C17);1))))

also das ist noch nicht die fertige formel sondern nur als beispiel..
die datei soll also mit Text() als stringwert für den dateinamen stehen und durch das ! danach als datei der komponente erkannt werden..
funktioniert natürlich nicht, aber ragtime sagt mir nicht wo der fehler liegt, nur dass es nicht möglich ist

Re: in formeln variable datei- und komponenten bezeichner verwen

#9191 On 22 Januar, 2010 15:21 Thomas Kaegi said,

Hallo Leo

Dafür ist die Erweiterung MetaFormel Funktionen gedacht. Dort gibt es die Funktion "RechneText", die genau das macht, was du dir wünschst: einen Text, der irgendwie zusammengestellt wurde, als Formel interpretieren und diese berechnen.

Es geht allerdings auch anders - wenn auch deutlich mühsamer!

Entweder:
1. Mit Applescript (ich mag mich allerdings nicht erinnern, ob du schon jemals gesagt hast, ob du mit Mac oder unter Windwos arbeitest). Der Zugriff zum fremden Dokument könnte als Script geschrieben werden, wobei das Script die Adressdetails - also auch den Dokumentnamen und -pfad - aus bestimmten Zellen eines Rechenblatts entnehmen kann. Der Knopf kann dann einfach die Ausführung des Scripts auslösen.

Oder:
2. Ich gehe davon aus, dass es der Datenpfad an und für sich fest ist, es aber verschiedene Dokumente gibt, die adressiert werden sollen. Angenommen es gibt die 4 Dokumente Hans, Peter, Martin und Klaus, denen jeweils der Wert einer bestimmten Zelle (z.B. C25) in Rechenblatt "RB1" entnommen werden und in eine bestimmte Zelle eines Zielrechenblatts eingesetzt werden soll, z.B. in Zelle A1. Ich nehme mal an, die folgenden Formeln stehen im gleichen Rechenblatt wie die Zielzelle.

In die Zellen B2:B5 kommen die folgenden Formeln:
Wenn(B1=1,SetzeZelle('';B1)&SetzeZelle("Datenpfad:Hans"!RB1!$C$25;A1))
Wenn(B1=2,SetzeZelle('';B1)&SetzeZelle("Datenpfad:Peter"!RB1!$C$25;A1))
Wenn(B1=3,SetzeZelle('';B1)&SetzeZelle("Datenpfad:Martin"!RB1!$C$25;A1))
Wenn(B1=4,SetzeZelle('';B1)&SetzeZelle("Datenpfad:Klaus"!RB1!$C$25;A1))

Jetzt kannst du zum Test zwei Knöpfe K1 und K2 definieren, K1 als Einblendmenü. Im Feld "Titel" von K1 gibst du die Werte
Hans
Peter
Martin
Klaus
ein und wählst die Option "Index ist Resultat". Dieser Knopf kann offensichtlich nur die Werte 1-4 annehmen. Den Knopf K2 definierst du im Feld "Knöpfe" mit der Formel (nicht Befehl!)
SetzeZelle(K1!X;Rechenblatt 1!$B$1)

Was macht das genau? Mit dem Einblendmenü-Knopf K1 wählst du das Dokument, dem der Wert entnommen werden soll. Der Knopf liefert als Wert den Index zu den 4 Befehlen in den Zellen B2:B5. Dieser Wert wird durch Anklicken von Knopf K2 in die Zelle B1 von Rechenblatt 1 geschrieben. Für eine (und nur eine) der vier Formeln ist damit die Wenn-Bedingung erfüllt und sie wird ausgeführt. Als Erstes wird mit SetzeZelle die Zelle B1 wieder gelöscht, damit es nicht einen "Selbstläufer" gibt. Der mit "&" angehängte zweite SetzeZelle-Befehl greift dann auf das gewählte Dokument zu. Die Referenz ist zwar nicht veränderlich, wie du dir das vorgestellt hast. Die Veränderung wird durch die Auswahl des gewünschten Befehls erzielt. - Natürlich geht es auch umgekehrt: Mit spezifischen Befehlen in die externen Dokumente schreiben. Die Adressierung im fremden Dokument kann auch mit der Index-Funktion (beim Lesen), bzw. mit Bereichsadressierung im SetzeZelle-Befehl (zum Schreiben) variabel gemacht werden.

Ich hoffe, das helfe dir weiter.
Gruss
Thomas