Mover documento do Excel aberto para janela separada

14

Relacionado (mas não o mesmo): Abra arquivos do Excel em uma nova janela

Se eu tiver uma instância do Excel com vários documentos abertos na mesma janela. Existe uma maneira de "destacar" uma das janelas na instância atual em execução do Excel para que fique em uma janela totalmente diferente?

O que não se encaixa na conta:

  • Organize tudo / veja lado a lado / outras coisas MDI; Eu quero uma janela separada que possa ser maximizada separadamente em outro monitor e seja gerenciada pelo sistema de janelas de maneira diferente, etc.
  • Salvar / fechá-lo na instância em execução e, em seguida, abrir uma nova instância do Excel e abrir o arquivo lá (é o que eu faço atualmente, mas é uma dor)

edit : a versão de destino do Excel é 2007 e 2010, embora tudo funcione

Daniel DiPaolo
fonte
Não posso ajudá-lo, mas eu já vi tanto no Excel: Tudo em uma janela (como MDI) e cada folha em uma janela. Você checou os prefs? Talvez seja uma opção?
Aaron Digulla
1
@ Aaron que pode ser aceitável e que a potencialmente ser melhor do que o que eu tenho agora, mas eu não estou vendo isso em qualquer lugar opção
Daniel DiPaolo
1
Microsoft seja condenado por me trancar em uma única janela do Excel! O seu sistema operacional não é chamado Windows - plural? Bem-vindo à janela 7!
dunxd
@ dunxd - é engraçado ler esse comentário "antigo" agora, já que, aqui no futuro, há constantemente usuários reclamando que o Excel abre cada pasta de trabalho em uma janela separada .
Ashleedawg #
Agora, as janelas com guias, como no Chrome, que podem ser "arrancadas" ou recombinadas, são o melhor dos dois mundos. Ótima interface do usuário.
dunxd

Respostas:

4

Idéia interessante. Estou razoavelmente confiante de que você não pode fazer isso sem uma macro personalizada. Sendo um domingo chuvoso ...

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

Supondo que você não esteja familiarizado com o VBA, seria necessário:

  1. Copie o código acima
  2. Com uma nova pasta de trabalho do Excel aberta, abra o editor VBA do Excel (Alt + F11)
  3. Clique com o botão direito do mouse em VBAProject (Book1) (ou o que for chamado no menu esquerdo)
  4. Selecione Inserir> Módulo
  5. Cole o código na janela principal
  6. De volta ao Excel, selecione outra pasta de trabalho para testar o código (ela salvará a pasta de trabalho antes de fechá-la)
  7. Volte ao editor VBA, selecione o módulo em que você colou e pressione o botão play

Eu tenho 3 versões do Excel instaladas na minha máquina e, quando executo isso no Excel 2010, ele abre uma nova instância do Excel 2003.

Se isso atender às suas necessidades, você pode empacotá-lo em um suplemento e disponibilizá-lo como um botão da faixa de opções. Entre em contato e eu posso ajudar se você não estiver familiarizado com isso.

Editar: se essa abordagem funcionar para você, obviamente haveria algum código adicional a ser adicionado, que garantiria que a nova instância do Excel fosse maximizada em outra janela. Avise-se me.

variante
fonte
Isto é perfeito! (Dadas as circunstâncias de ter que usar o Excel 2010, que é)
Tobias KIENZLER
Ou você pode simplesmente clicar com o botão direito do mouse no ícone do Excel e clicar em Microsoft Excel, que abre uma nova instância (que é essencialmente o que o código acima parece estar fazendo). O que eu fiz (por acidente, não consigo descobrir como repeti-lo) é aberto uma pasta de trabalho do Excel fora do MDI do aplicativo existente (efetivamente permitindo que eu tenha essa pasta de trabalho em uma janela separada), mas ainda é capaz de interagir com outras pastas de trabalho (para vlookups na minha MDI principal (vlookups, etc.).
William
3

Não tenho como "separar" uma planilha para uma nova janela, mas se você sabe desde o início que deseja duas janelas, esta é a maneira mais rápida:

Abra seu primeiro arquivo normalmente. SHIFT + CLIQUE no botão da barra de tarefas do Excel (na parte inferior da tela, entre o botão Iniciar e o relógio). Isso forçará o Excel a abrir uma nova instância como uma janela separada. Entre nessa nova janela e clique em Arquivo -> Abrir para abrir o segundo arquivo. Enxágue e repita conforme necessário para várias janelas.

Infelizmente, se você quiser clicar duas vezes nos arquivos para abrir o Excel, terá que abandonar esse hábito na segunda janela, que é o meu problema usual. Mas com uma visão de futuro, não há maneira mais fácil.

Brady
fonte
0

Para abrir 2 instâncias, clique duas vezes no primeiro arquivo que deseja abrir. Uma vez aberto, vá para start / programs / msoffice / excel e abra outra instância a partir daí. Então você pode usar o arquivo / abrir funciona para mim. Se ele não der uma olhada em Opções de pasta> Tipos de arquivo, XLS, Avançado e verifique o formulário Abrir.

Dave
fonte
Mencionei especificamente que já faço isso.
22611 Daniel DiPaolo
Ok desculpas eu estava ficando minhas janelas e instâncias misturadas. E suponho que você tenha tentado maximizar o excel em ambos os monitores e então visualizar -> nova janela, que permite gerenciar essa janela separadamente?
26411 Dave
Exibir> Nova janela cria apenas uma nova janela dentro da mesma instância, não uma nova janela não MDI.
precisa saber é o seguinte
0

A resposta acima provavelmente funcionaria com uma pasta de trabalho diferente da pasta de trabalho ativa , que é o que eu precisava fazer. Aqui está o que eu usei


Verifique na inicialização se a pasta de trabalho está sozinha na instância:

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 vai no ThisWorkbookmódulo , de modo que quando o livro é aberto imediatamente verifica para ver se ele é o único livro aberto neste caso, e se não:

  1. Salvar pasta de trabalho atual
  2. Definir wb atual como somente leitura (para impedir que uma segunda cópia seja um problema)
  3. Shell para prompt de comando para abrir o Excel em uma nova instância (usando a opção de/x linha de comando do Excel ), carregando outra instância da pasta de trabalho atual
  4. Fechar pasta de trabalho atual

Se necessário, você pode usar uma linha de comando personalizada ao abrir a nova instância para transferir instruções, etc., para a nova instância. Você também pode considerar os prós e contras de ocultar a janela do aplicativo para a nova instância.

ashleedawg
fonte