(C) 2009 - 2018 by Mourad Louha · Alle Rechte vorbehalten

Vergleich der Fensterverwaltung zwischen Office 2010 und Office 2013

Während ich für den Artikel „Mehrere unabhängige Excel 2013 Instanzen aufrufen“ vom 05.07.2013 die von mir aufgerufenen Excel 2013 Instanzen untersuchte, ob diese tatsächlich unabhängig voneinander waren, fiel mir auf, dass Excel 2013 immer ein verstecktes Anwendungsfenster im Hintergrund mitführt. Dieses versteckte Fenster ist in früheren Excel-Versionen nicht vorhanden.

Office 2010 und Office 2013 Fensterverwaltung

Dies hatte mich neugierig gemacht und dazu veranlasst, weiter zu recherchieren. Hierbei stellte ich mir folgende Fragen: im welchen Ausmaß hat sich eigentlich der Aufbau der Fensterverwaltung in Excel 2013 im Verhältnis zu früheren Versionen verändert? Sind ähnliche Veränderungen in den anderen Office Anwendungen ebenfalls vorhanden? Wirken sich diese Änderungen bei Excel 2013 auf VBA-Code aus?

Grundlegender Aufbau von Windows-Anwendungen

Bevor ich jedoch mit dem Vergleich zwischen Office 2010 und Office 2013 starte, zunächst einige Basics zum grundlegenden Aufbau von Windows Anwendungen, die eine grafische Oberfläche bieten. In der Regel beinhalten diese mindestens ein am Bildschirm sichtbares Hauptfenster. Und, oftmals setzt sich das Hauptfenster wiederum aus einer ganzen Reihe von weiteren Fenstern zusammen, die sich hierarchisch dem Hauptfenster unterordnen und bestimmte Aufgaben übernehmen, wie beispielsweise Menüleisten, Symbolleisten oder Statusleisten.

Neben dem Hauptfenster beinhalten die meisten Anwendungen auch Dialoge zur Interaktion mit den Anwendern. Dialoge, sowie die darin enthaltenen Steuerelemente, wie Schaltflächen, Eingabefelder oder Auswahlfelder sind in Windows jeweils als eigenständige Fenster zu sehen und ordnen sich in ebenfalls in der Hierarchie ein.

Office 2010 und Office 2013 Fensterverwaltung

Obere Abbildung zeigt einen solchen Aufbau am Beispiel des Windows Editors. Das Hauptfenster mit der Bezeichnung „Notepad“ – oder korrekterweise Klassenname – ist direkt dem entsprechenden Prozess untergeordnet. Unterhalb dieses Fensters befindet sich das Textfeld, welches in dem Beispiel den Text „Hallo Welt“ enthält.

Der Dialog zum Suchen hat sich neben dem Hauptfenster als eigenständiges Fenster unterhalb des Prozesses eingeordnet. Die einzelnen Steuerelemente sind wiederum dem Dialogfenster untergeordnet.

Jedem Fenster wird zudem zur Laufzeit ein sogenanntes „Handle“ in Form einer hexadezimalen Zahl durch das Betriebssystem zugewiesen, über welches das Fenster eindeutig identifiziert werden kann.

Das Aussehen und die Fähigkeiten einzelner Fenster – z.B. ob diese einen Rahmen oder Schaltflächen zum Maximieren und Minimieren besitzen – erfolgt bei der Windows-Programmierung durch Setzen entsprechender Eigenschaften – in der Regel über die Zuweisung einer Kombination von Konstanten. Diese Eigenschaften lassen sich auch oftmals unter Zuhilfenahme entsprechender Tools, wie z.B. WinSpy++, zur Laufzeit einer Anwendung ändern, so dass beispielsweise ein unsichtbares Fenster wieder sichtbar gemacht werden kann.

Die Fensterverwaltung in Office 2010

Nach dem Start von Excel 2010 ist dessen Hauptfenster unter dem Klassennamen XLMAIN in der Hierarchie wiederzufinden. Auf gleicher und tiefer liegenden Ebenen befinden sich eine ganze Reihe weitere Fenster, wovon einige die in dem Screenshot über die graue Schrift als unsichtbar bzw. inaktiv gekennzeichnet sind.

Office 2010 und Office 2013 Fensterverwaltung

Unterhalb des Hauptfensters sind beispielsweise auch das Menüband oder die Scroll-Balken eingeordnet. Die Fensterklasse XLDESK repräsentiert den Bereich in Excel 2010, indem Sie einzelne Arbeitsmappen anordnen können. In dem abgebildeten Beispiel wurden zwei neue Arbeitsmappen angelegt, die durch die Einträge EXCEL7 repräsentiert werden.

Office 2010 und Office 2013 Fensterverwaltung

Die Option „Fenster in Taskleiste“ bestimmt in Excel 2010 bzw. Word 2010, ob einzelne Dokumente in der Anwendung innerhalb desselben Anwendungsfensters geladen und dargestellt werden können oder ob für jedes Dokument ein neues Anwendungsfenster inklusive Menüband geladen wird. Für Excel 2010 macht es hierbei keinen Unterschied in der Fensterhierarchie, ob die Einstellung „Fenster in Taskleiste“ gesetzt ist oder nicht.

Im Gegensatz zu Excel 2010 berücksichtigt jedoch Word 2010 sehr wohl die Option „Fenster in Taskleiste“ und ordnet die Dokumentenfenster unterschiedlich in die Hierarchie ein. Falls die Option nicht gesetzt und somit das Multiple Document Interface aktiv ist, legt Word 2010 die Fensterhandles der Dokumentfenster im Unterpunkt _WwF unterhalb des Hauptfensters mit dem Klassennamen OpusApp ab.

Office 2010 und Office 2013 Fensterverwaltung

Ist die Option gesetzt und wird somit jedes Dokument in einem eigenem Fenster dargestellt, erstellt Word 2010 ein neues Handle für ein zweites Hauptfenster und sortiert das entsprechende Dokument dort ein.

Office 2010 und Office 2013 Fensterverwaltung

In PowerPoint 2010 steht die Option „Fenster in Taskleiste“ nicht zur Verfügung, weshalb PowerPoint jedes Hauptfenster wie Word 2010 mit aktiver Option unterhalb des Prozesses „Powerpnt.exe“ unter dem Klassennamen PPTFrameClass ablegt.

Die Fensterverwaltung in Office 2013

In Office 2013 wurde die Option „Fenster in Taskleiste“ entfernt. Die Fensterhandles jedes geöffneten Fensters ordnen sich dann direkt unterhalb des Prozesses ein. Hierbei ist es auch unerheblich, ob Sie ein zweites Dokument anlegen bzw. öffnen oder für dasselbe Dokument eine zweite Ansicht via dem Menübefehl „Ansicht – Neues Fenster“ erzeugen. Dies trifft zu mindestens für die von mir getesteten Anwendungen Excel 2013, Word 2013 und PowerPoint 2013 zu.

Folgender Screenshot zeigt die Fensterhierarchie von Excel 2013 direkt nach dem Anlegen einer neuen Arbeitsmappe.

Office 2010 und Office 2013 Fensterverwaltung

Schnell fällt die Fensterklasse MSO_BORDEREFFEKT_WINDOW_CLASS auf, die in den vorherigen Versionen nicht vorhanden ist. Diese Fensterklasse repräsentiert eigenständige Fenster an den äußeren Rändern des Excel-Anwendungsfensters und ist übrigens auch in den weiteren Office 2013 Anwendungen zu finden.

Microsoft hat somit meines Erachtens für die Schatteneffekte an den Rändern der Anwendungsfenster, die z.B. unter Windows 7 zu sehen sind, eine von den Windows Vorgaben unabhängige Implementierung durchgeführt. Die Fenster-Handles für die Schatteneffekte erscheinen übrigens auch in weiteren Konstellationen, z.B. wenn ein Hinweisfenster (Tooltip) eingeblendet wird.

Zudem ist in der Fensterhierarchie für Excel 2013 ein weiterer interessanter Effekt zu beobachten: sobald Sie Excel 2013 öffnen, wird neben dem Hauptfenster ein weiteres unsichtbares Hauptfenster mit dem Klassennamen XLMAIN angelegt.

Wird dieses sichtbar gemacht, ist erkennbar, dass es dieselbe Größe und Position annimmt wie das sichtbare Hauptfenster. Und, Größen- und Positionsänderungen am Hauptfenster führen dazu, dass sich das zweite Fenster immer entsprechend anpasst, also dem Hauptfenster folgt.

Office 2010 und Office 2013 Fensterverwaltung

In oberer Abbildung habe ich dieses Fenster in den Vordergrund geholt. Zu sehen sind einige Steuerelemente, die auch ein normales Anwendungsfenster aufweist, wie der Namensbereich und die Eingabezeile für Formeln. Beide Elemente sind jedoch inaktiv und können nicht verwendet werden. Und, ein Menüband ist nicht vorhanden.

Office 2010 und Office 2013 Fensterverwaltung

Wenn Sie eine zweite Mappe anlegen, z.B. über Strg+N, koppelt sich das unsichtbare Fenster sofort an das neue Dokumentfenster. Ebenso, wenn Sie ein zweites Fenster für ein bestehendes Dokument über den Menübefehl „Ansicht – Neues Fenster“ aufrufen. Das unsichtbare Fenster folgt somit immer dem aktiven Fenster.

Ich war gespannt, ob Word 2013 ebenfalls ein solches unsichtbares Fenster anlegen würde. Interessanterweise geschieht dies nicht, wenn Sie Word 2013 öffnen und ein leeres Dokument anlegen. Word 2013 verhält sich beim Start wie Word 2010 bei aktivierter Option „Fenster in Taskleiste“.

Office 2010 und Office 2013 Fensterverwaltung

Wenn Sie ein zweites Dokument in Word 2013 anlegen oder ein neues Fenster für das bestehende Dokument erzeugen, verhält sich Word 2013 ebenfalls wie erwartet und ordnet die Fenster unterhalb des Prozesses ein.

Wenn Sie jedoch das zweite Fenster bzw. Dokument schließen, verschwindet das entsprechende Fenster nicht aus der Fensterhierarchie, sondern wird geleert und unsichtbar geschaltet. Folgender Screenshot zeigt zwei geöffnete Dokumente sowie ein übrig gebliebenes leeres Fenster.

Office 2010 und Office 2013 Fensterverwaltung

Sobald Sie dann wieder ein neues Dokument anlegen, erzeugt Word nicht ein neues Fenster, sondern lädt das Dokument in das versteckte Fenster und hebt dessen Unsichtbarkeit auf. Legen Sie dann weitere Dokumente an oder erzeugen neue Fenster, werden wieder auch neue Fensterhandles generiert. Schließen Sie wieder ein oder mehrere Fenster, bleibt immer eines übrig, das wiederum im Falle der Erzeugung eines neues Fensters genutzt wird.

Office 2010 und Office 2013 Fensterverwaltung

Das Verhalten unterscheidet sich somit von Excel 2013, wo immer ein unsichtbares Fenster mitgeführt wird. Bei PowerPoint 2013 konnte ich kein unterschiedliches Verhalten im Verhältnis zu PowerPoint 2010 feststellen.

Auswirkungen auf Code in Excel 2013

Die nächste Frage, die mich beschäftigte war, ob die neue Fensterverwaltung Auswirkungen auf VBA-Code zur Ermittlung der Fenster in Excel 2013 hat. Um es vorweg zu nehmen: nein. Code wie beispielsweise Application.Windows.Count oder die Aufzählung der Fenster per Schleife funktionieren wie gewohnt.

Sollten Sie jedoch allerdings zur Auflistung der Fenster Windows API-Funktionen verwenden, so sollten die unsichtbaren Fenster berücksichtigt bzw. gegebenenfalls herausgefiltert werden. Eine Beispielmappe, die Sie hier nachfolgend herunterladen können, zeigt die Problematik auf.

» Beispielmappe zur Abfrage der Fenster via VBA und API

Office 2010 und Office 2013 Fensterverwaltung

Der Code mit den Windows API-Funktionen in der Beispielmappe filtert das unsichtbare Fenster nicht heraus. Dieses lässt sich jedoch recht einfach bewerkstelligen, indem Sie Länge des Fenstertitels in der Variable strCaption abfragen. Ist die Länge kleiner 1, handelt es sich um das versteckte Fenster.

Fazit

Die Änderungen an der Fensterverwaltung zeigen, dass die Neuerungen in Office 2013 nicht nur kosmetischer Natur sind, sondern auch tiefer greifende Veränderungen stattgefunden haben. Für VBA ändert sich nicht viel in Bezug zu Code, der Fenster auflistet bzw. auf diese zugreift. Die Windows API wird sicherlich in den seltensten Fällen zum Einsatz kommen, aber hier gilt es, die neuen Gegebenheiten zu berücksichtigen.

Wieso sich die Fensterverwaltung auch innerhalb der von mir drei geprüften Office 2013 Anwendungen Excel, Word und PowerPoint unterscheidet, vermag ich leider nicht zu beantworten. Eine Vermutung ist, dass es möglicherweise durch die Altlasten im Code der Anwendungen technisch gesehen nicht möglich war, alle Anwendungen gleichermaßen umzustellen. Vielleicht ist dies ja einer nächsten Version vorbehalten.

Mourad Louha

Über den Autor · Mourad Louha

Mourad arbeitet seit 2005 als selbständiger Softwareentwickler und Trainer und lebt in Aachen, gelegen am Dreiländereck Belgien, Deutschland und Niederlande. In seiner Freizeit engagiert er sich in Online Communities rund um Office, schreibt beim Excel Ticker Artikel zu Office & Co. und betreibt weitere Community Projekte in Zusammenarbeit mit Freunden und Partnern, wie das Forum zu Microsoft Office 365 und Office 2013, den Excel Soccer oder den Excel Formel Übersetzer. Für sein außergewöhnliches Engagement wurde er seit Januar 2011 jährlich von Microsoft als Microsoft Most Valuable Professional (MVP) ausgezeichnet.

 
Comments
Thomas Frommelt

Hallo,

toller Artikel. Wir haben leider das Problem dass bei einer Excel 2013 Installation bei Doppelklick auf eine Datei, immer 2 Fenster geöffnet werden. Einmal das versteckte und einmal die Datei selber. Wie kann ich den Fehler beheben? Danke!

Hallo Thomas,

vielen Dank! Eine Möglichkeit wäre vielleicht zu prüfen, ob die Personal.xlsb die Ursache ist oder eine Reparaturinstallation zu versuchen. Siehe im englischen Artikel hier What’s this blank window?. Hoffe, das hilft weiter.

Viele Grüße, Mourad

Thomas Frommelt

Super Danke! Das hat funktioniert. Ich habe die Personal.xlsb gelöscht und ein neues Makro angelegt. Jetzt geht es. Wäre ich nie drauf gekommen. Danke!!!

Hallo Thomas, prima, freut mich. Gruß :-)

Bernd Götzelmann

Vielen Dank für die obige Ausarbeitung – macht wirklich einiges deutllicher!!!
Habe ein Tool (Träger kompletter Code – separate Excel-Datei – Basis Excel97-2003) entwickelt,
welche für viele einzelne andere Projektdateien verschiedenste Funktionen über VBA steuert.
Aus den Projektdateien wird das Tool (Userform) der Tool-Datei aufgerufen oder auch ausgeblendet.
Hat perfekt funktioniert mit der Basis, der verschiedenen Excel-Dateien innerhalb einer Instanz.
Wenn eine zweite Projektdatei geöffnet wurde blieb die Userform immer aktiv und konnte direkt
für die neue aktive Arbeitsmappe verwendet werden.
Nun mit Excel 2013 wird das etwas anders – wie ich getestet habe folgt die Userform immer der aufrufenden
Instanz – bedeutet, wenn ich in Taskleiste eine andere (zweite) Projektdatei aktiviere und daraus die
Userform aufrufe, wird die Userform zwar eingeblendet – mit ihr aber auch die zugehörige aktivierende
„Instanz-Projektdatei“. Somit kann ich also nicht gleich weiterarbeiten, weil ich in der falschen
Projektdatei gelandet bin. Ich muss nun also immer erst das Tool „auschalten“, danach die
Instanz (Datei) wechseln und dann die Userform wieder aufrufen…!
Gibt es innerhalb dieser neuen Excel-Instanz-Verwaltung ggf. die Möglichkeit einfach und schnell
zwischen „Einzelinstanz“ und „Gruppeninstanz“ umzuschalten, oder muss ich für das
De- und Aktivieren einen Workaround schaffen? Ich hoffe ich konnte den Sachverhalt etwas plausibel und
nicht zu verworren schildern?

Hallo Bernd,

bin zwar nicht sicher, ob ich genau nachvollzogen habe, was Du meinst. Aus der Datei, wo die UserForm drin ist, könntest Du ein Add-In machen. Das dürfte m.E. das Einblenden des Fensters aufheben, aber jetzt von mir ungetestet. Du könntest auch probieren, die UserForm-Verwaltung (falls es nicht so ist) in die Datei auslagern, wo die UserForm auch drin ist. Z.B. Funktionen dort erstellen (Public Sub oder Public Function) wie „Ausblenden“, „Einblenden“ und dann per Application.Run(_UserForm_Dateiname!…) diese aufrufen. Auch ungetestet. Im Normalfall wird von Excel eine Instanz geöffnet und die Fenster usw. sind Kindprozesse.

Viele Grüße

Ralf Paugstadt

Hallo,
Wenn man aus Word ein Excel oder aus Excel ein Word Dokument aufruft „fliegen“ die Fenster übereinander, was sehr ärgerlich ist, wenn man zwei Monitore hat und beispielsweise erreichen möchte, das XLSe im Excel-Fenster auf Monitor-2 geöffnet werden, während das DOC auf Monitor 1 verbleibt.
Kann man dieses Wunschverhalten erreichen?
Vielen Dank

Hallo Ralf,

dazu kann ich Dir leider nicht viel sagen bzw. mir wäre keine Methode bekannt.

Viele Grüße

Habe ähnlich zum Eintrag von Bernd Götzelmann eine Frage:
Ich habe ebenfalls VBA-Anwendungen: z.B.: ein xlsm liest aus einem xlsx Paramter, aus einer Datenbank die Werte und belädt damit ein weiteres xlsx. Und das alles klarerweise in einer Programm-Instanz. Dieser Vorgang kann durchaus auch Stunden dauern (Lesen aus einer remote SQL-Db). Derzeit habe ich aber die Möglichkeit mittels Shift-Klick auf der Taskleiste eine zweite Excel-Programm-Instanz aufzurufen und bin dadurch nicht blockiert.
Wie soll bzw. wird das in Excel 2013 funktionieren?
Danke und liebe Grüße
Ernst

oooops – sehe eben, dass meine Mail-Adresse unvollständig war – bitte (auch) per Mail anzworten.
danke Ernst

… und wo ist jetzt meine Anfrage bzg. mehreren Excel Programm-Instanzen geblieben?

okay – ich versuche es nochmals:
Ich habe eine VBA-Anwendung, welche einerseits aus einem xlsx Parameter, aus einer SQL-Datenbank Werte ausliest und damit ein weiteres xlsx belädt. Dieser Vorgang dauert über eine Stunde. Damit ich währenddessen nicht „blockiert“ bin, rufe ich mittels Shift-Klick in der Taskliste eine weitere Excel-Programm-Instanz auf und kann darin an anderen Tabellen weiterarbeiten. Wie wird das bzw. kann das mit Excel 2013 funktionieren?
danke und liebe Grüße
Ernst

Hallo Ernst,

die Kommentare werden in diesem Blog manuell freigeschaltet, da ich sonst trotz eines guten Spam-Filters mit Spam zugemüllt werde. Auch kann ich nicht bereits freigegebene User für’s direkte Kommentieren freischalten, da es leider auch Fälle gab, wo der erste Kommentar ok war und die darauf folgenden leider nicht. Nachteil ist jedoch, dass ich nicht immer online bin, weshalb das Freischalten durchaus manchmal etwas dauern kann. Hoffe, Du hast Verständnis dafür (und die anderen Leser/innen auch). Normalerweise müsste der Blog auch anzeigen, dass der Kommentar moderiert wird. Klappte das bei Dir nicht?

In Excel 2013 klappt das mit der Shift-Taste genauso wie früher, z.B. wenn man auf das Programmsymbol in der Programmgruppe klickt. Alternativ kannst Du auch eine Programmverknüpfung auf dem Desktop legen und den Parameter /x angeben, z.B. C:\Programme\…\excel.exe /x. Klappt auch m.W. mit 2010. Dann geht’s über einen einfachen Doppelklick.

Viele Grüße, Mourad

Hallo Mourad,

Sehr interessanter Artikel!
Habe ich das richtig verstanden, dass sich, egal wie ich es einstelle, immer eine zweite Mappe in einem neuen Fenster öffnet?
Habe davor mit 2010 gearbeitet, wenn ich die 1. Mappe offen habe, und eine zweite Mappe geöffnet habe, hat sich diese im selben „Fenster“ geöffnet, hat also nicht die Fensteranordnung auf dem Desktop total durcheinander gebracht.
Mit 2013 muss ich jedes Mall die zweite Mappe an die richtige Position schieben, damit sie mir die andren Desktop-Fenster nicht verdeckt.
Sehe ich das richtig?
Vielen Dank!

Hallo Max,

Danke; seit Office 2013 beinhaltet Excel (leider) keinen sogenannten MDI-Modus mehr. Grund dafür dürfte u.a. gewesen sein, dass es dann wohl besser mit mehreren Monitoren funktioniert. Abschalten lässt sich dieses Verhalten nicht.

Das heißt dann aber auch, dass, jedes mal, wenn Du eine neue Mappe öffnest, diese in einem separaten Fenster mit eigenem Menüband usw. erscheint. In der Registerkarte ‚Ansicht‘ gibt es den Befehl ‚Alle anordnen‘, womit Du dann die Fenster auf dem Desktop anordnen kannst. Z.B. sinnvoll, wenn Du etwas von Mappe A nach Mappe B kopieren möchtest. Obwohl Du mehrere Fenster siehst, ist es immer noch dieselbe Excel-Instanz (wenn Du den Task Manager öffnest, sieht Du nur einen Excel-Prozess). Ausser Du zwingst Excel, eine neue Instanz zu öffnen, siehe Kommentare weiter oben.

Viele Grüße, Mourad

Vielen Dank für die rasche Antwort!
Tja das habe ich mir schon gedacht, schade. Das mit Fenster anordnen hab ich auch gefunden, hemmt halt etwas den Arbeitsfluss, war eine praktische Sache.
Werd mir deine Seite noch weiter zu Gemüte führen, sehr hilfreich, danke!

Hallo Max, gern geschehen :-)

Friedhelm Peters

Hallo Mourad,

erst einmal vielen Dank für deine Infos.

Ich habe folgendes seltsames Verhalten unter Excel 2013:
Wenn ich bestimmte Dateien öffne, ist das Main-Fenster nicht direkt hinter der Seite, sondern etwas versetzt und damit sichtbar. Es folgt auch nicht dem Fenster mit den Daten, sondern ist wie ein eigenes Fenster. Habe Office 2013 in der HUB-Version und auch schon repariert und auch ganz neu installiert. Seltsam ist, dass es bei anderen Dateien teilweise nicht so ist. Außerdem „merkt“ sich Excel (Windows) nicht die eingestellte Fenstergröße, sondern öffnet die Datei immer in einer gleichen mittleren Größe, sodass ich jedesmal das Fenster mit der Maus aufziehen muss (Vollbild funktioniert, ist aber von mir nicht gewollt). Früher (Office 2010) öffnete das Fenster immer in der zuvor geschlossenen Größe wieder. Hast du dazu irgendwelche Ideen?

Vielen Dank für deine Mühen

Friedhelm

Guten Morgen Friedhelm,

das könnte möglicherweise etwas mit der Personal.xlsb zu tun haben. Schaue Dir dazu auch mal diesen Thread (in Englisch) an. http://answers.microsoft.com/en-us/office/forum/office_2013_release-excel/excel-2013-starting-with-two-windows/869369d8-2f31-4f3f-bdfe-380c6736235c Dort wurde beschrieben, in dem zweiten Fenster die Mappe wieder einzublenden (Registerkarte Ansicht) und die Datei zu speichern. Falls Du Personal.xlsb nicht brauchst, diese mal woanders hin verschieben (Du findest die Datei, wenn Du im Explorer %appData%\Microsoft\Excel\XLSTART\ eingibst + Enter).

Viele Grüße, Mourad

Hallo MLourad,

ich habe folgendes Problem mit Excel2013:
Ich habe ein .xlam-Makro das eine Form startet. In der Form kann man mit über einen Button mit der API Funktion ShowOpen eine xlsx-Datei öffnen. Mit Excel2010 funktionierte das prima, bei Excel2013 verschwindet aber nach dem Öffnen die Form, ich muss dann über die Taskleiste das Excelfenster in dem die Form angezeigt wird suchen.
Ich habe schon probiert per API die Fensternummer der Form zu ermitteln und dann mit SetForegroundWindow das Fenster zu aktivieren. Funktioniert aber nicht.
Hast Du vielleicht eine Idee was ich noch probieren könnte?

Vielen Dank.

Rainer

Hallo Rainer,

wenn Du eine Datei via Dialog öffnen möchtest, brauchst Du normalerweise kein Windows API. Du kannst den Dialog direkt per VBA aufrufen: Application.FileDialog(msoFileDialogOpen). Siehe auch VBA-Hilfe zu FileDialog, da sollte ein Beispiel drin sein. Probier mal den Dialog aus, vielleicht ist es ausreichend. Ansonsten: das Handle der UserForm ermitteln kannst Du über die API-Funktion FindWindow, z.B.:

Private Declare PtrSafe Function apiFindWindow Lib "user32" _
        Alias "FindWindowA" (ByVal a As Any, _
        ByVal b As String) As Long
:
:
Dim h As Long
:
:
h = apiFindWindow(0&, Caption)

Caption ist der Titel (UserForm.Caption) der UserForm und dieser sollte eindeutig sein.

Viele Grüße, Mourad

Hallo, wir haben ein Problem mit Excel 2013, dass wenn mehrere Fenster geöffnet sind, also unterschiedliche Excel Files, z. B. das dritte Fenster/Excel-File nicht geschlossen werden kann sondern zuerst ein anderes gespeichert werden muss. War so mit Version 2010 kein Problem.

Hallo Rossi,

das sollte so nicht sein, also die Dateien sollten sich in beliebiger Reihenfolge schliessen lassen. Ich habe einen Thread in Englisch im Office TechCenter gefunden, wo als Problem ggf. ein AutoDesk-Add-In genannt wird. Habt ihr vielleicht AutoDesk? Es gibt dort in dem Beitrag zwar den Tipp, wie man Excel dazu bringt, grundsätzlich eine neue Instanz aufzumachen, aber ich würde erstmal den Hinweis über das Add-In von AutoDesk nachgehen.

Viele Grüße, Mourad

Hallo Mourad,

vielen Dank für die schnelle Rückantwort. Wir haben Autodesk Software installiert. Auch der betroffene Rechner. Ich werden deinem Tipp nachgehen und informieren ob das Problem gelöst werden konnte.

Hallo Mourad, das Problem wurde/konnte durch das Hotfix 2017.0.1 von Autodesk gelöst werden. Laut Support könnte es aber auch erforderlich sein das AddIn komplett zu deinstalieren. Das muss dann über die Installationsroutine von VAULT durchgeführt werden. War aber bei uns nicht erforderlich.

Hallo Rossi,

lieben Dank für die Info, die sicherlich anderen Lesern und Leserinnen mit einem ählichen Problem weiterhelfen wird.

Viele Grüße,
Mourad

Leave a Reply