Mueva el documento abierto de Excel a una ventana separada

14

Relacionados (pero no iguales): abrir archivos de Excel en una nueva ventana

Si tengo una instancia de Excel con varios documentos abiertos en la misma ventana. ¿Hay alguna manera de "arrancar" una de las ventanas en la instancia actual de Excel para que se encuentre en una ventana completamente diferente?

Lo que no se ajusta a la factura:

  • Organizar todo / ver de lado a lado / otras cosas de MDI; Quiero una ventana separada que se pueda maximizar por separado en otro monitor y que el sistema de ventanas administre de manera diferente, etc.
  • Guardarlo / cerrarlo en la instancia en ejecución y luego abrir una nueva instancia de Excel y abrir el archivo allí (esto es lo que hago actualmente, pero es un dolor)

editar : la versión de Excel de destino es 2007 y 2010, aunque cualquier cosa servirá

Daniel DiPaolo
fuente
No puedo ayudarte, pero he visto tanto en Excel: todo en una ventana (como MDI) y cada hoja una ventana. ¿Revisaste las preferencias? Tal vez es una opción?
Aaron Digulla
1
@Aaron, eso puede ser aceptable y podría ser mejor de lo que tengo ahora, pero no veo esa opción en ninguna parte
Daniel DiPaolo,
1
¡Maldita sea Microsoft por encerrarme en una sola ventana de Excel! ¿Su sistema operativo no se llama Windows en plural? ¡Bienvenido a Window 7!
dunxd
@dunxd: es divertido leer ese "viejo" comentario ahora ya que, aquí en el futuro, constantemente hay usuarios quejándose de que Excel abre cada libro en una ventana separada .
ashleedawg
Ahora las ventanas con pestañas como en Chrome que se pueden "arrancar" o recombinar son lo mejor de ambos mundos. Gran interfaz de usuario paso adelante.
dunxd

Respuestas:

4

Idea interesante. Estoy razonablemente seguro de que no puede hacer esto sin una macro personalizada. Siendo un domingo lluvioso ...

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

Suponiendo que no esté familiarizado con VBA, necesitaría:

  1. Copia el código de arriba
  2. Con un nuevo libro de Excel abierto, abra el editor VBA de Excel (Alt + F11)
  3. Haga clic derecho en VBAProject (Libro1) (o como se llame en el menú de la izquierda)
  4. Seleccione Insertar> Módulo
  5. Pega el código en la ventana principal
  6. De vuelta en Excel, seleccione otro libro de trabajo para probar el código (guardará el libro de trabajo antes de cerrarlo)
  7. Vuelva al editor VBA, seleccione el módulo que pegó y presione el botón de reproducción

Tengo 3 versiones de Excel instaladas en mi máquina, y cuando ejecuto esto en Excel 2010, abre una nueva instancia de Excel 2003.

Si esto se adapta a sus necesidades, puede empaquetarlo en un complemento y tenerlo disponible como un botón de cinta. Avísame y puedo ayudarte si no estás familiarizado con hacerlo.

Editar: si este enfoque funciona para usted, obviamente habría algún código adicional para agregar que garantizaría que la nueva instancia de Excel se maximice en otra ventana. Házmelo saber.

variante
fuente
¡Esto es perfecto! (Dadas las circunstancias de tener que usar Excel 2010, eso es)
Tobias Kienzler
O simplemente puede hacer clic derecho en el icono de Excel y hacer clic en Microsoft Excel, que abre una nueva instancia (que es esencialmente lo que parece estar haciendo el código anterior). Lo que he hecho (por accidente, no puedo entender cómo repetirlo) es abrir un libro de Excel fuera del MDI de la aplicación existente (dejándome tener ese libro en una ventana separada) pero aún así poder interactuar con otros libros (para vlookups en mi MDI principal (vlookups, etc.)
William
3

No tengo una manera de "arrancar" una hoja en una nueva ventana, pero si sabes desde el principio que querrás dos ventanas, esta es la forma más rápida:

Abra su primer archivo como de costumbre. MAYÚS + CLIC en el botón de la barra de tareas de Excel (en la parte inferior de la pantalla, entre el botón Inicio y el reloj). Esto obligará a Excel a abrir una nueva instancia como una ventana separada. Entra en esa nueva ventana y haz clic en Archivo -> Abrir para abrir el segundo archivo. Enjuague y repita según sea necesario para múltiples ventanas.

Desafortunadamente, si desea hacer doble clic en los archivos para abrir Excel, tendrá que romper ese hábito para la segunda ventana, que es mi problema habitual. Pero con un poco de previsión, no hay manera más fácil.

Brady
fuente
0

Para abrir 2 instancias, haga doble clic en el primer archivo que desea abrir. Una vez que esté abierto, vaya a inicio / programas / msoffice / excel y simplemente abra otra instancia desde allí. Entonces puedes usar File / open Funciona para mí. Si no tiene en cuenta las Opciones de carpeta> Tipos de archivo, XLS, Avanzado y verifique el formulario Abrir.

Dave
fuente
Mencioné específicamente que ya hago esto.
Daniel DiPaolo
Ok, disculpas, estaba confundiendo mis ventanas e instancias. Y supongo que ha intentado maximizar Excel en ambos monitores y luego ver -> nueva ventana que le permite administrar esa ventana por separado.
Dave
Ver> Nueva ventana simplemente crea una nueva ventana dentro de esa misma instancia, no una nueva ventana que no sea MDI.
Daniel DiPaolo
0

La respuesta anterior probablemente funcionaría con un libro diferente al libro activo , que es lo que necesitaba hacer. Esto es lo que usé


Asegúrese al inicio de que el libro de trabajo esté solo, por ejemplo:

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

Este código va en el ThisWorkbookmódulo , de modo que cuando se abre el libro de trabajo, se verifica de inmediato para ver si es el único libro abierto en este caso, y si no:

  1. Guardar libro actual
  2. Establezca el wb actual como de solo lectura (para evitar que una segunda copia sea un problema)
  3. Shell al símbolo del sistema para abrir Excel en una nueva instancia (usando el interruptor de/x línea de comando de Excel ), cargando otra instancia del libro actual
  4. Cerrar el libro actual

Si es necesario, puede usar una línea de comando personalizada al abrir la nueva instancia para transferir instrucciones, etc., a la nueva instancia. También podría considerar las ventajas y desventajas de ocultar la ventana de la aplicación para la nueva instancia.

ashleedawg
fuente