Zwischen zwei Excel Instanzen wechseln

Hallo Zusammen
Ichhabe das Gefühl, dass dieses Problem eigentlich lösbar sein müsste. Und zwar auf ziemlich simple Art und Weise. Aber ich habe bis jetzt nur Müll dazu gefunden. Daher mein Eintrag hier.

Zuerst einmal vorne weg:
Ich verwende Excel 2007

Mein Problem:
Ich habe zwei separate Excel-Instanzen (auch Sitzungen genannt) geöffnet. Ich möchte jetzt per VB-Code von der einen Instanz zur anderen wechseln.

Wie geht das?

Bsp.:

Instanz 1 = test1.xlsx
Instanz 2 = test2.xlsx

Wenn ich jetzt 

Workbooks(„test2.xlsx“).Activate

von test1.xlsx aus aufrufe bekomme ich die Error-Meldung „Index ausserhalb des gültigen Bereichs“

Das müsste aber doch irgendwie gehen. 

Danke jetzt schon für die Hilfe!!!

Jochen

Hallo Jochen,

Ichhabe das Gefühl, dass dieses Problem eigentlich lösbar sein
müsste.

ja, ich auch, bin aber immer Optimist in sowas, egal was Googletreffer sagen :smile:

Und zwar auf ziemlich simple Art und Weise.

Mein Gefühl signalisiert das Gegenteil. Es erzählt mir was von API, VBs, sonstigem.

Fängt schon an wenn du die zweite Instanz startest, bei mir kommt schonmal die Meldung personl.xls gesperrt usw.

Aber ich habe bis jetzt nur Müll dazu gefunden.

Ich weiß nicht wie du gesucht hast.

Mein Problem:
Ich habe zwei separate Excel-Instanzen (auch Sitzungen
genannt) geöffnet. Ich möchte jetzt per VB-Code von der einen
Instanz zur anderen wechseln.
Wie geht das?

Ich weiß das jetzt noch nicht. Irgendwie geht es, schau mal hier für’n Anfang.:
http://www.herber.de/forum/archiv/992to996/993027_We…

Instanz 1 = test1.xlsx
Instanz 2 = test2.xlsx

Wenn ich jetzt 

Workbooks(„test2.xlsx“).Activate

von test1.xlsx aus aufrufe bekomme ich die Error-Meldung
„Index ausserhalb des gültigen Bereichs“

Blockquote scheint hier nicht umgesetzt zu werden.
Das verstehe ich, Workbooks in einer Instanz „kennt“ nur die Mappen in dieser Instanz, insofern ist die Fehlermeldung korrekt.

Das müsste aber doch irgendwie gehen. 

Da bin ich bei dir, hab aber keinerlei Ahnung wie :frowning:

Gruß
Reinhard

Hallo Jochen,
wie kommt’s denn dazu, dass Excel in zwei Instanzen gestartet ist? Manuell, oder per VBA?
Ich kann dazu leider im Moment nichts testen, auf meinem Laptop läuft schon Office 2013, da stellt sich die Situation so nicht …
lg
Katharina

Hallo Katharina,

wie kommt’s denn dazu, dass Excel in zwei Instanzen gestartet
ist? Manuell, oder per VBA?

soweit ich weiß ist beides möglich, spielt das eine Rolle beim Zugriff auf eine Instanz?

Ich kann dazu leider im Moment nichts testen, auf meinem
Laptop läuft schon Office 2013, da stellt sich die Situation
so nicht …

Wie dann? Kannste da nicht zwei oder mehr Instanzen starten?
Sorry, hab nur 2007, deshalb frage ich nach

Gruß
Reinhard

Hallo Katharina
Das ganze kommt daher, dass ich bewusst (also manuell) zwei Instanzen geöffnet habe, um auf zwei Bildschirmen arbeiten zu können. (Das sollte übrigens bei jeder Office Version möglich sein)

Gruss

Jochen

Hallo Reinhard
Also wenn du mir nicht gleich Antwort geben kannst, muss es sich wirklich um etwas komplizierteres handeln. :smile:

Was dein Link anbelangt, den habe ich auch schon gefunden.

Doch mein Problem ist, dass die Datei bereits von Hand geöffnet wurde. Und mein Auftrag ist es jetzt, ein Skript zu schreiben, dass die zweite Instanz von der ersten aus wieder schliessen kann. (Das habe ich zu Beginn vergessen zu erwähnen)

Danke auf jeden Fall schon mal für die Bemühungen!!!

Gruss

Jochen

Vba, zweite Excel-Instanz terminieren, beenden, killen

Was dein Link anbelangt, den habe ich auch schon gefunden.
Doch mein Problem ist, dass die Datei bereits von Hand
geöffnet wurde. Und mein Auftrag ist es jetzt, ein Skript zu
schreiben, dass die zweite Instanz von der ersten aus wieder
schliessen kann. (Das habe ich zu Beginn vergessen zu
erwähnen)

Hallo Jochen,

das klingt für mich einfacher als hin- und her zu wechseln.
Sofern du Pfad und Dateinamen kennst geht das mit nachfolgendem Code.
Ich habe zum Testen einfach eine zweite Instanz angelegt, die hatte gleich den Namen Mappe2 erhalten von Excel wegen „ROT“.

Code von Thomas Risi
Dort wird auch „ROT“ erläutert und „Moniker“ erwähnt, muß mal schauen was das ist :smile:

Untenstehenden Code getestet, klar kommt eine korrekte Fehlermeldung da Mappe2 natürlich nicht gespeichert war. Muß man halt noch ggfs. einbauen.

Gruß
Reinhard

Option Explicit

Sub Test()
Dim xlExtern As Excel.Application
Dim wbExtern As Excel.Workbook
Set wbExtern = GetObject("Mappe2")
Set xlExtern = wbExtern.Application
wbExtern.Worksheets("Tabelle1").Range("A1").Value = "huhu"
' Die externe Mappe schließen
'wbExtern.Close
' Die externe Excelinstanz schließen
'xlExtern.Quit
Set wbExtern = Nothing
Set xlExtern = Nothing
End Sub

Hallo Zusammen
Habe einen Weg gefunden. 
Es ist möglich alle offenen Fenster über Windows selber abzufragen.

Siehe dazu:

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

Ich habe nun die Abfrage einfach meinen Bedürfnissen angepasst.

Gruss
Jochen

Hallo Jochen,

Habe einen Weg gefunden. 
Es ist möglich alle offenen Fenster über Windows selber
abzufragen.
http://www.office-loesung.de/ftopic525840_0_0_asc.php

den Weg habe ich, äh mein Gefühl dir doch sofort bei meiner ersten Antwort an dich aufgezeigt. Naja, durch Erwähnung von API. Isabelle aus der westlichen Galaxis *grien* hat halt APi mit entspechendem Code verdeutlichtet.

Alles was da „oben“ an Deklarationen steht mit Private Declare…alias usw. sind APIs.
Äh kannst du Englisch gut genug für ein Fachbuch?

Dann besorg dir von Dan Appleman seinen User Guide für Apis oder wie das heißt.
Ist/war eun Api-Guru. Ich habs auch, dummerweise reicht mein Englisch dafür nicht aus, ich hab nur was vom hinteren Teil wo APis in Kurzform, also Syntax usw. wie in F1 bei Vba beschrieben werden.

Wird sicher nicht mehr verlegt, also ebay o.ä., aber nur wenn du dich in APis einlesen willst.

Ich habe nun die Abfrage einfach meinen Bedürfnissen
angepasst.

Ist ja okay. Der gezeigte Code bietet ja eine Fülle an Informationen.
Zu anfang schreibt ja Isabelle:
"Zum Glück werden aber auch alle geöffneten Mappen in die ROT eingetragen. Und
darüber können wir auf das übergeordnete Application-Objekt zugreifen. "

Mein Code im letzten Beitrag macht ja das gleiche. Über den Mappennamen die Instanz rausfinden und die terminieren. Ist halt einen Tick kürzer :smile:

Selbstverständlich ist der von Isabelle gezeigte Code superklasse.
Denn damit kann man unabhängig von Excel beliebige Fenster, deren Kinderfenster und Enkelfenster „bearbeiten“.

Übrigens, Thomas Ramel der dort wohl auch Mod ist, arbeitet auch mit zwei Bildschirmen.
Und auf meine Nachfrage wie das denn so gemacht wird mit zwei Bildschirmen vor einigen Jahren hat er es mir als einfach beschrieben das zu handeln, also wie huscht die Maus von einem zumanderen u.v.m.

Mangels zweitem Bildschirm war das nur eine allgemeine Anfrage von mir. Klar, zweite Grafikkarte o.ä. war mir schon klar. Worauf ich hinaus will, mein Erinnerungsvermögen ist nicht das beste.

Ich verstehe nie wie sich Zeugennach einer xy-Sendung an z.B. an ein Auto erinnern können daß da mal im November letzten jahres irgendwo im Wald stand.
Ich garantiert nicht, selbst wenn ich mit dem Fahrrad dagen gefahren wäre nicht.

Jedenfalls, ich komm ja immer schnell auf den Punkt, an eine zweite Instanz kann ich mich nicht erinnern. Allerdings haben wir nicht über Details geredet.
May be, Thomas liest hier mit, evtl. kennt er was ohne zweite Instanz.

Ohne Mod-prokura setze ich mal deine Anfrage auf „beantwortet“ :smile:

Gruß
Reinhard

Gruss
Jochen

Hallo Jochen,

bin gerade erst wieder von einer Schulung zurück. Bei mir funktioniert aber der Aufruf mit workbooks(„NAME.xlsx“).activate. (Und zwar ohen problem. Ich habe ihn in eine Public sub gepackt und in ein Modul. Er zeigt die geöffnte Datei an. Was willst Du eigentlich damit machen, wenn du doch nur in die Taskleiste klicken mußt um das gleiche zu haben?

Grüße#
Jürgen