Przenieś otwarty dokument Excela do osobnego okna

14

Powiązane (ale nie to samo): Otwórz pliki Excela w nowym oknie

Jeśli mam wystąpienie programu Excel z wieloma dokumentami otwartymi w tym samym oknie. Czy istnieje sposób na „oderwanie” jednego z okien w bieżącym działającym wystąpieniu programu Excel, aby znajdowało się ono w zupełnie innym oknie?

Co nie pasuje do rachunku:

  • Ułóż wszystko / przeglądaj obok siebie / inne rzeczy MDI; Chcę osobnego okna, które można zmaksymalizować osobno na innym monitorze i inaczej zarządzać nim system okien itp.
  • Zapisywanie / zamykanie go w działającej instancji, a następnie otwieranie nowej instancji programu Excel i otwieranie tam pliku (tak właśnie robię, ale to jest ból)

edycja : docelowa wersja programu Excel to 2007 i 2010, choć wszystko się da

Daniel DiPaolo
źródło
Nie mogę ci pomóc, ale widziałem oba w Excelu: wszystko w jednym oknie (jak MDI) i każdym oknie w jednym oknie. Czy sprawdziłeś prefiksy? Może to jest opcja?
Aaron Digulla,
1
@Aaron, który może być do zaakceptowania i potencjalnie byłby lepszy niż to, co mam teraz, ale nigdzie nie widzę tej opcji
Daniel DiPaolo
1
Microsoft niech mnie szlag za zamknięcie mnie w jednym oknie Excela! Czy twój system operacyjny nie nazywa się Windows - liczba mnoga? Witamy w Windows 7!
dunxd
@ Dunxd - zabawne jest czytanie tego „starego” komentarza, ponieważ tutaj, w przyszłości, ciągle użytkownicy narzekają, że Excel otwiera każdy skoroszyt w osobnym oknie.
ashleedawg
Teraz okna z kartami, takie jak w Chrome, które można „oderwać” lub zrekombinować, to najlepsze z obu światów. Świetny interfejs użytkownika do przodu.
dunxd

Odpowiedzi:

4

Ciekawy pomysł. Jestem przekonany, że nie możesz tego zrobić bez własnego makra. Będąc deszczową niedzielą ...

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

Zakładając, że nie znasz VBA, musisz:

  1. Skopiuj powyższy kod
  2. Po otwarciu nowego skoroszytu programu Excel otwórz edytor VBA programu Excel (Alt + F11)
  3. Kliknij prawym przyciskiem myszy VBAProject (Book1) (lub jakkolwiek to się nazywa w lewym menu)
  4. Wybierz Wstaw> Moduł
  5. Wklej kod do głównego okna
  6. Z powrotem w programie Excel wybierz inny skoroszyt, na którym chcesz przetestować kod (zapisze skoroszyt przed jego zamknięciem)
  7. Wróć do edytora VBA, wybierz wklejony moduł i naciśnij przycisk odtwarzania

Mam 3 wersje programu Excel zainstalowanego na moim komputerze, a kiedy uruchomię to w programie Excel 2010, otworzy się nowa instancja programu Excel 2003.

Jeśli to odpowiada twoim potrzebom, możesz spakować to do dodatku i mieć dostępne jako przycisk wstążki. Daj mi znać, a mogę pomóc, jeśli nie znasz się na tym.

Edycja: Jeśli to podejście działa dla Ciebie, oczywiście byłby dodatkowy kod do dodania, który zapewniłby maksymalizację nowego wystąpienia programu Excel w innym oknie. Daj mi znać.

wariant
źródło
To jest doskonałe! (To znaczy, biorąc pod uwagę okoliczności korzystania z Excela 2010)
Tobias Kienzler
Lub możesz po prostu kliknąć prawym przyciskiem myszy ikonę Excela i kliknąć Microsoft Excel, który otwiera nowe wystąpienie (co zasadniczo wydaje się robić powyższy kod). To, co zrobiłem (przez przypadek, nie mogę wymyślić, jak to powtórzyć), otwiera skoroszyt programu Excel poza MDI istniejącej aplikacji (skutecznie pozwalając mi mieć ten skoroszyt w osobnym oknie), ale nadal jest w stanie współdziałać z innymi skoroszytami (dla vlookups w moim głównym MDI (vlookups itp.).
William
3

Nie mam sposobu na „oderwanie” arkusza do nowego okna, ale jeśli od początku wiesz, że będziesz potrzebować dwóch okien, jest to najszybszy sposób:

Otwórz swój pierwszy plik jak zwykle. SHIFT + KLIKNIJ przycisk paska zadań programu Excel (u dołu ekranu, między przyciskiem Start a zegarem). Zmusi to program Excel do otwarcia nowego wystąpienia jako osobnego okna. Przejdź do tego nowego okna i kliknij Plik -> Otwórz, aby otworzyć drugi plik. Opłucz i powtórz w razie potrzeby dla wielu okien.

Niestety, jeśli chcesz dwukrotnie kliknąć pliki, aby otworzyć program Excel, będziesz musiał przełamać ten nawyk w drugim oknie, co jest moim zwykłym problemem. Ale przy pewnym myśleniu naprzód nie ma łatwiejszego sposobu.

Brady
źródło
0

Aby otworzyć 2 wystąpienia, kliknij dwukrotnie pierwszy plik, który chcesz otworzyć. Po otwarciu przejdź do start / Programs / msoffice / excel i po prostu otwórz stamtąd inną instancję. Następnie możesz użyć Plik / otwórz To działa dla mnie. Jeśli nie, spójrz na Opcje folderów> Typy plików, XLS, Zaawansowane i sprawdź formularz Otwórz.

Dave
źródło
W szczególności wspomniałem, że już to robię.
Daniel DiPaolo,
Ok przepraszam, że mylę okna i instancje. I przypuszczam, że próbowałeś zmaksymalizować program Excel na obu monitorach, a następnie wyświetlić -> nowe okno, które pozwala osobno zarządzać tym oknem?
Dave
Widok> Nowe okno tworzy po prostu nowe okno w tym samym wystąpieniu, a nie nowe okno inne niż MDI.
Daniel DiPaolo
0

Powyższa odpowiedź prawdopodobnie działałaby ze skoroszytem innym niż aktywny skoroszyt , co właśnie musiałem zrobić. Oto, czego użyłem


Po uruchomieniu upewnij się, że skoroszyt jest sam:

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

Ten kod wchodzi do ThisWorkbookmodułu , więc po otwarciu skoroszytu natychmiast sprawdza, czy jest to jedyny otwarty skoroszyt w tym przypadku, a jeśli nie:

  1. Zapisz bieżący skoroszyt
  2. Ustaw bieżący balans bieli jako tylko do odczytu (aby zapobiec problemowi z drugą kopią)
  3. Powłoka do wiersza polecenia, aby otworzyć program Excel w nowym wystąpieniu (przy użyciu przełącznika/x wiersza polecenia programu Excel ), ładując inne wystąpienie bieżącego skoroszytu
  4. Zamknij bieżący skoroszyt

W razie potrzeby można użyć niestandardowego wiersza polecenia podczas otwierania nowej instancji w celu przesłania instrukcji itp. Do nowej instancji. Możesz również rozważyć zalety i wady ukrywania okna aplikacji dla nowej instancji.

ashleedawg
źródło