Sposta il documento Excel aperto in una finestra separata


14

Correlati (ma non uguali): aprire i file Excel in una nuova finestra

Se ho un'istanza di Excel con più documenti aperti nella stessa finestra. C'è un modo per "strappare" una delle finestre nell'istanza corrente di Excel in modo che sia in una finestra completamente diversa?

Cosa non si adatta al conto:

  • Organizza / visualizza fianco a fianco / altre cose MDI; Voglio una finestra separata che può essere ingrandita separatamente su un altro monitor ed è gestita in modo diverso dal sistema di finestre, ecc.
  • Salvarlo / chiuderlo nell'istanza in esecuzione e quindi aprire una nuova istanza di Excel e aprire il file lì (questo è quello che faccio attualmente, ma è una seccatura)

modifica : la versione di destinazione di Excel è 2007 e 2010, anche se qualsiasi cosa farà


Non posso aiutarti ma ho visto entrambi in Excel: tutto in una finestra (come MDI) e ogni foglio in una finestra. Hai controllato le preferenze? Forse è un'opzione?
Aaron Digulla,

1
@Aaron potrebbe essere accettabile e potenzialmente migliore di quello che ho ora, ma non vedo quell'opzione da nessuna parte
Daniel DiPaolo

1
Maledizione a Microsoft per avermi bloccato in una singola finestra di Excel! Il tuo sistema operativo non è chiamato Windows - plurale? Benvenuto in Window 7!
Dunxd,

@dunxd - è divertente leggere quel "vecchio" commento ora poiché, qui in futuro, ci sono costantemente utenti che lamentano che Excel apre ogni cartella di lavoro in una finestra separata .
ashleedawg,

Ora le finestre a schede come in Chrome che possono essere "strappate" o ricombinate sono le migliori di entrambi i mondi. Ottima interfaccia utente.
Dunxd,

Risposte:


4

Idea interessante. Sono ragionevolmente fiducioso che non puoi farlo senza una macro personalizzata. Essere una domenica piovosa ...

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

Supponendo che tu non abbia familiarità con VBA, dovresti:

  1. Copia il codice sopra
  2. Con una nuova cartella di lavoro di Excel aperta, apri l'editor VBA di Excel (Alt + F11)
  3. Fai clic con il tasto destro su VBAProject (Book1) (o come si chiama nel menu a sinistra)
  4. Seleziona Inserisci> Modulo
  5. Incolla il codice nella finestra principale
  6. Torna in Excel, seleziona un'altra cartella di lavoro su cui testare il codice (salverà la cartella di lavoro prima di chiuderla)
  7. Torna all'editor VBA, seleziona il modulo incollato e premi il pulsante di riproduzione

Ho 3 versioni di Excel installate sul mio computer e quando eseguo questo in Excel 2010, si apre una nuova istanza di Excel 2003.

Se questo soddisfa le tue esigenze, puoi inserirlo in un componente aggiuntivo e renderlo disponibile come pulsante multifunzione. Fammi sapere e posso aiutarti se non hai familiarità con farlo.

Modifica: se questo approccio funziona per te, ovviamente ci sarebbe del codice aggiuntivo da aggiungere che assicurerebbe che la nuova istanza di Excel sia ingrandita in un'altra finestra. Fammi sapere.


Questo è perfetto! (Date le circostanze di dover usare Excel 2010, cioè)
Tobias Kienzler,

Oppure puoi semplicemente fare clic destro sull'icona di Excel e fare clic su Microsoft Excel, che apre una nuova istanza (che è essenzialmente ciò che sembra fare il codice sopra). Quello che ho fatto (per caso, non riesco a capire come ripeterlo) è aprire una cartella di lavoro Excel al di fuori dell'MDI dell'applicazione esistente (permettendomi effettivamente di avere quella cartella di lavoro in una finestra separata) ma ancora in grado di interagire con altre cartelle di lavoro (per i vlookup nel mio MDI principale (vlookups, ecc.)
William,

3

Non ho modo di "strappare" un foglio in una nuova finestra, ma se sai dall'inizio che vorrai due finestre, questo è il modo più veloce:

Apri il tuo primo file normalmente. MAIUSC + CLIC sul pulsante della barra delle attività di Excel (nella parte inferiore dello schermo, tra il pulsante Start e l'orologio). Ciò costringerà Excel ad aprire una nuova istanza come finestra separata. Vai in quella nuova finestra e fai clic su File -> Apri per aprire il secondo file. Risciacquare e ripetere, se necessario, per più finestre.

Sfortunatamente, se ti piace fare doppio clic sui file per aprire Excel, dovrai rompere l'abitudine per la seconda finestra, che è il mio solito problema. Ma con un po 'di lungimiranza, non c'è modo più semplice.


0

Per aprire 2 istanze, fare doppio clic sul primo file che si desidera aprire. Una volta aperto, vai su / programmi / msoffice / excel e apri un'altra istanza da lì. Quindi puoi usare File / open Funziona per me. Se non dà un'occhiata alle Opzioni cartella> Tipi di file, XLS, Avanzate e controlla il modulo Apri.


Ho detto espressamente che lo faccio già.
Daniel DiPaolo,

Ok, mi scuso per aver confuso le mie finestre e istanze. E suppongo che tu abbia provato a massimizzare Excel su entrambi i monitor e quindi visualizzare -> nuova finestra che ti consente di gestire quella finestra separatamente?
Dave,

Visualizza> Nuova finestra crea solo una nuova finestra all'interno della stessa istanza, non una nuova finestra non MDI.
Daniel DiPaolo,

0

La risposta sopra probabilmente funzionerebbe con una cartella di lavoro diversa dalla cartella di lavoro attiva , che è quello che dovevo fare. Ecco cosa ho usato


Assicurarsi all'avvio che la cartella di lavoro sia sola nell'istanza:

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

Questo codice va in del ThisWorkbookmodulo , in modo che quando la cartella di lavoro si apre subito controlli per vedere se è l'unica cartella di lavoro aperta in questo caso, e se non:

  1. Salva cartella di lavoro corrente
  2. Imposta wb corrente come sola lettura (per evitare che una seconda copia sia un problema)
  3. Shell Prompt di comandi per aprire Excel in una nuova istanza (utilizzando Excel /xriga di comando dell'interruttore ), caricando un altro esempio della cartella di lavoro corrente
  4. Chiudi la cartella di lavoro corrente

Se necessario, è possibile utilizzare una riga di comando personalizzata quando si apre la nuova istanza per trasferire istruzioni, ecc. Alla nuova istanza. Potresti anche considerare i pro e i contro di nascondere la finestra dell'applicazione per la nuova istanza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.