Verschieben Sie das geöffnete Excel-Dokument in ein separates Fenster

14

Verwandte (aber nicht dieselben): Öffnen Sie Excel-Dateien in einem neuen Fenster

Wenn ich eine Excel-Instanz mit mehreren Dokumenten im selben Fenster geöffnet habe. Gibt es eine Möglichkeit, eines der Fenster in der aktuell ausgeführten Instanz von Excel abzureißen, sodass es sich in einem ganz anderen Fenster befindet?

Was passt nicht auf die Rechnung:

  • Ordnen Sie alle / Ansicht nebeneinander / andere MDI-Elemente an. Ich möchte ein separates Fenster, das auf einem anderen Monitor separat maximiert werden kann und vom Fenstersystem anders verwaltet wird usw.
  • Speichern / Schließen in der laufenden Instanz und dann Öffnen einer neuen Instanz von Excel und Öffnen der Datei dort (das ist, was ich derzeit mache, aber es ist ein Schmerz)

Bearbeiten : Ziel-Excel-Version ist 2007 und 2010, obwohl alles möglich ist

Daniel DiPaolo
quelle
Ich kann dir nicht helfen, aber ich habe beides in Excel gesehen: Alles in einem Fenster (MDI-ähnlich) und jedes Blatt ein Fenster. Hast du die Einstellungen überprüft? Vielleicht ist es eine Option?
Aaron Digulla
1
@ Aaron das mag akzeptabel sein und wäre möglicherweise besser als das, was ich jetzt habe, aber ich sehe diese Option nirgendwo
Daniel DiPaolo
1
Microsoft ist verdammt dafür, mich in ein einziges Excel-Fenster gesperrt zu haben! Heißt Ihr Betriebssystem nicht Windows - Plural? Willkommen bei Window 7!
Donnerstag,
@dunxd - es ist lustig, diesen "alten" Kommentar jetzt zu lesen, da hier in Zukunft ständig Benutzer sich beschweren, dass Excel jede Arbeitsmappe in einem separaten Fenster öffnet .
Ashleedawg
Fenster mit Registerkarten wie in Chrome, die "abgerissen" oder neu kombiniert werden können, sind das Beste aus beiden Welten. Großartiger UI-Fortschritt.
dunxd

Antworten:

4

Interessante Idee. Ich bin mir ziemlich sicher, dass Sie dies nicht ohne ein benutzerdefiniertes Makro tun können. Ein regnerischer Sonntag sein ...

Sub OpenInNewInstance()
     Dim objXLNewApp As Excel.Application
     Dim doc As String

     doc = ActiveWorkbook.FullName
     ActiveWorkbook.Close True

     Set objXLNewApp = CreateObject("Excel.Application")

     objXLNewApp.Workbooks.Open doc
     objXLNewApp.Visible = True
End Sub

Vorausgesetzt, Sie sind nicht mit VBA vertraut, müssen Sie:

  1. Kopieren Sie den obigen Code
  2. Öffnen Sie mit einer neuen Excel-Arbeitsmappe den VBA-Editor von Excel (Alt + F11)
  3. Klicken Sie mit der rechten Maustaste auf VBAProject (Book1) (oder wie auch immer es im linken Menü heißt).
  4. Wählen Sie Einfügen> Modul
  5. Fügen Sie den Code in das Hauptfenster ein
  6. Wählen Sie in Excel eine andere Arbeitsmappe aus, in der Sie den Code testen möchten (die Arbeitsmappe wird gespeichert, bevor sie geschlossen wird).
  7. Kehren Sie zum VBA-Editor zurück, wählen Sie das eingefügte Modul aus und drücken Sie die Wiedergabetaste

Auf meinem Computer sind 3 Versionen von Excel installiert. Wenn ich diese in Excel 2010 ausführe, wird eine neue Instanz von Excel 2003 geöffnet.

Wenn dies Ihren Anforderungen entspricht, können Sie dies in ein Add-In packen und es als Multifunktionsleistenschaltfläche verfügbar machen. Lassen Sie es mich wissen und ich kann Ihnen helfen, wenn Sie damit nicht vertraut sind.

Bearbeiten: Wenn dieser Ansatz für Sie funktioniert, müssen Sie natürlich zusätzlichen Code hinzufügen, um sicherzustellen, dass die neue Excel-Instanz in einem anderen Fenster maximiert wird. Gib mir Bescheid.

Variante
quelle
Dies ist perfekt! (In Anbetracht der Umstände, Excel 2010 verwenden zu müssen, das heißt)
Tobias Kienzler
Oder Sie können einfach mit der rechten Maustaste auf das Excel-Symbol klicken und auf Microsoft Excel klicken, wodurch eine neue Instanz geöffnet wird (was im Wesentlichen mit dem obigen Code zu tun scheint). Was ich getan habe (aus Versehen kann ich nicht herausfinden, wie ich es wiederholen soll), wird in einer Excel-Arbeitsmappe außerhalb des MDI der vorhandenen Anwendung geöffnet (damit ich diese Arbeitsmappe in einem separaten Fenster habe), kann aber trotzdem mit anderen Arbeitsmappen interagieren (für Vlookups in meinem Haupt-MDI (Vlookups, etc.).
William
3

Ich habe keine Möglichkeit, ein Blatt in einem neuen Fenster "abzureißen". Wenn Sie jedoch von Anfang an wissen, dass Sie zwei Fenster benötigen , ist dies der schnellste Weg:

Öffnen Sie Ihre erste Datei wie gewohnt. UMSCHALT + KLICKEN Sie auf die Schaltfläche der Excel-Taskleiste (am unteren Bildschirmrand zwischen der Schaltfläche Start und der Uhr). Dadurch wird Excel gezwungen, eine neue Instanz als separates Fenster zu öffnen. Gehen Sie in dieses neue Fenster und klicken Sie auf Datei -> Öffnen, um die zweite Datei zu öffnen. Spülen und wiederholen Sie den Vorgang bei Bedarf für mehrere Fenster.

Wenn Sie zum Öffnen von Excel auf Dateien doppelklicken möchten, müssen Sie diese Angewohnheit leider für das zweite Fenster aufheben, was mein übliches Problem ist. Aber mit einigem Vorausdenken gibt es keinen einfacheren Weg.

Brady
quelle
0

Doppelklicken Sie zum Öffnen von 2 Instanzen auf die erste Datei, die Sie öffnen möchten. Sobald das geöffnet ist, gehe zu / programs / msoffice / excel und öffne einfach eine andere Instanz von dort. Dann kannst du File / open benutzen. Es funktioniert bei mir. Wenn dies nicht der Fall ist, klicken Sie auf Ordneroptionen> Dateitypen, XLS, Erweitert und aktivieren Sie das Kontrollkästchen Formular öffnen.

Dave
quelle
Ich habe ausdrücklich erwähnt, dass ich das schon mache.
Daniel DiPaolo
Okay, entschuldigung, ich habe meine Fenster und Instanzen durcheinander gebracht. Und ich nehme an, Sie haben versucht, Excel auf beiden Monitoren zu maximieren und dann anzuzeigen -> neues Fenster, mit dem Sie dieses Fenster separat verwalten können?
Dave
Ansicht> Neues Fenster erstellt nur ein neues Fenster innerhalb derselben Instanz, kein neues Nicht-MDI-Fenster.
Daniel DiPaolo
0

Die obige Antwort würde wahrscheinlich mit einer anderen Arbeitsmappe als der aktiven Arbeitsmappe funktionieren , was ich tun musste. Hier ist, was ich benutzt habe


Stellen Sie beim Start sicher, dass die Arbeitsmappe in folgenden Fällen alleine ist:

Private Sub Workbook_Open()
    If Application.Workbooks.Count > 1 Then  'check if there's >1 open wb's in this instance
        If MsgBox("This workbook will be moved to a new instance of Excel," & vbLf & _
            "so as to not affect performance of your other workbooks.", _
            vbOKCancel + vbInformation + vbDefaultButton1 + vbMsgBoxSetForeground) _
            = vbCancel Then Exit Sub
        Debug.Print Application.Hinstance, "Moving wb to new instance."
        OpenInNewInstance
        Debug.Print Application.Hinstance, "Moved wb to new instance."
    Else
        Debug.Print "This wb is in it's own instance. (#" & Application.Hinstance & ")"
    End If
End Sub

Sub OpenInNewInstance()
    With ThisWorkbook
        .Save                                           'save workbook before making it read-only
        .ChangeFileAccess xlReadOnly                    'make this wb read-only (so the other isn't)
        Shell ("excel.exe /x """ & .FullName & """")    'open current wb in new instance
        .Close                                          'close this workbook
    End With
End Sub

Dieser Code geht in dem ThisWorkbookModul , das so , wenn die Arbeitsmappe es geöffnet wird sofort überprüft, ob es nur die in diesem Fall Arbeitsmappe öffnen, und wenn nicht:

  1. Aktuelle Arbeitsmappe speichern
  2. Setzt das aktuelle wb als schreibgeschützt (um zu verhindern, dass eine zweite Kopie ein Problem darstellt)
  3. Shell - Eingabeaufforderung zu Excel in einer neuen Instanz zu öffnen (unter Verwendung von Excel /xBefehlszeilenschaltern ), eine weitere Instanz des aktuellen Arbeitsbuch geladen
  4. Schließen Sie die aktuelle Arbeitsmappe

Bei Bedarf können Sie beim Öffnen der neuen Instanz eine benutzerdefinierte Befehlszeile verwenden , um Anweisungen usw. auf die neue Instanz zu übertragen. Sie können auch die Vor- und Nachteile in Betracht ziehen, das Anwendungsfenster für die neue Instanz auszublenden.

ashleedawg
quelle