Microsoft Excel

Herbers Excel/VBA-Archiv

Rückgabe Objekt-Verweis über Application.Run | Herbers Excel-Forum


Betrifft: Rückgabe Objekt-Verweis über Application.Run von: Stefan
Geschrieben am: 15.01.2010 20:36:37

Hallo Leute,

bitte um einen Tip, wie ich folgendes Problem lösen kann.

Habe zwei unterschiedlichen Arbeitsmappen mit jeweils einem gleichen Klassenmodul XYClass.

Mappe1 ruft nun über:

Set RückgabeXYClass = Application.Run("Mappe2!HalloDatei2")

eine Function HalloDatei2 in der 2. Arbeitsmappe auf.
Dort wird eine Instanz des Klassenmoduls erzeugt, an Mappe1 möchte ich einen Verweis auf dieses Objekt zurückgeben in der Art:

Public Function HalloDatei2() as XYClass
Dim VerweisXYClass = XYClass
Set VerweisXYClass = New XYClass
Set HalloDatei2 = VerweisXYClass
End Function


Da dieses Objekt in Mappe1 ebenfalls definiert ist, sollte es kein Problem geben.
Ein echtes Problem ist aber, das der Rückgabewert immer Nothing ist, obwohl VerweisXYClass existiert.
Ich habe den Umweg über Zuweisung an Variant, Objekt etc. versucht: immer Nothing

Weiß jemand, wie ich einen Objekt-Verweis von einer Mappe in eine andere übergeben kann ?

  

Betrifft: AW: Rückgabe Objekt-Verweis über Application.Run von: Nepumuk
Geschrieben am: 15.01.2010 20:55:26

Hallo,

Zwei Möglichkeiten:

1. Du setzt in der einen Mappe einen Verweis auf die andere Mappe. Damit wird aber die andere Mappe grundsätzlich und automatisch mit der anderen geöffnet geöffnet. Hat den Nachteil, dass die Verbindung einseitig ist, du also nur Objekte und Variablen aus der einen in die andere Mappe übergeben kannst
2. Du benutzt ein Addin auf welches in beiden Mappen ein Verweis gesetzt ist. In diesem Addin eine öffentliche Klasse über die du Variablen und Objekte zwischen den Mappen austauschen kannst. Hat den Vorteil, dass 1. die Verbindung in beide Richtungen funktioniert und 2. du entscheiden kannst, ob eine andere Mappe geöffnet werden soll und muss. Dass das Addin automatisch mit geöffnet wird, sollte nicht stören.

Gruß
Nepumuk


  

Betrifft: AW: Rückgabe Objekt-Verweis über Application.Run von: Stefan
Geschrieben am: 15.01.2010 21:22:35

Hallo Nepumuk,

beide Mappen sind AddIns, ein Basis-AddIn und ein (oder mehrere) Berechnungs-AddIns, die vom Basis-AddIn verwaltet und gesteuert werden.
Ich kenne in der 1. Mappe (Basis) das Workbook-Objekt der 2.Mappe und umgekehrt.
Aber wie ist hier ein Austausch möglich ? Eine öffentliche Klasse (Public) ist doch nur in der Arbeitsmappe bekannt, in der die Klasse definiert ist, oder ?

Gruß
Stefan


  

Betrifft: AW: Rückgabe Objekt-Verweis über Application.Run von: Nepumuk
Geschrieben am: 15.01.2010 22:07:57

Hallo Stefan,

durch den Verweis und das veröffentlichen der Klasse kann die in allen Mappen (natürlich auch in Addins) benutzt werden. Hier findest du ein Beispiel:

http://www.office-loesung.de/ftopic251939_0_0_asc.php

Gruß
Nepumuk


  

Betrifft: AW: Rückgabe Objekt-Verweis über Application.Run von: Stefan
Geschrieben am: 15.01.2010 22:18:29

Hallo Nepumuk,

danke für den Tip und den Link, werde ich testen und hoffentlich weiterkommen.
Wahrscheinlich vereinfacht sich dadurch so einiges in meinem Ansatz, da ich dann keine "doppelten" Klassen in den AddIns mitschleppen muss.

Vielen Dank !

Gruß
Stefan


Beiträge aus den Excel-Beispielen zum Thema "Rückgabe Objekt-Verweis über Application.Run"