Mover o documento do Excel aberto para uma janela separada

14

Related (but not the same): Open Excel files in new window

Se eu tiver uma instância do Excel com vários documentos abertos na mesma janela. Existe uma maneira de "arrancar" 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 fatura:

  • Organizar tudo / visualizar lado a lado / outras coisas MDI; Eu quero uma janela separada que pode ser maximizada separadamente em outro monitor e é gerenciada pelo sistema de janelas de forma diferente, etc.
  • Salvando / fechando-a na instância em execução e, em seguida, abrindo uma nova instância do Excel e abrindo o arquivo (isso é o que eu faço atualmente, mas é uma dor)

edit : a versão do Excel de destino é 2007 e 2010, embora qualquer coisa seja necessária

    
por Daniel DiPaolo 26.04.2011 / 19:58

4 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, será necessário:

  1. Copie o código acima
  2. Com uma nova pasta de trabalho do Excel aberta, abra o editor de VBA do Excel (Alt + F11)
  3. Clique com o botão direito do mouse em VBAProject (Book1) (ou o que quer que seja chamado no menu à esquerda)
  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 a fechar)
  7. Volte para o editor VBA, selecione o módulo que você colou e pressione o botão play

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

Se isso atender às suas necessidades, você poderá empacotá-lo em um suplemento e disponibilizá-lo como um botão da faixa de opções. Deixe-me saber 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 para adicionar, o que garantiria que a nova instância do Excel fosse maximizada em outra janela. Me avise.

    
por 01.05.2011 / 22:55
3

Eu não tenho como "destacar" uma planilha para uma nova janela, mas se você souber do início que você quer duas janelas, essa é 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 - > Abra para abrir o segundo arquivo. Enxague e repita conforme necessário para várias janelas.

Infelizmente, se você quiser clicar duas vezes nos arquivos para abrir o Excel, você terá que quebrar esse hábito para a segunda janela, que é o meu problema usual. Mas com algum pensamento avançado, não há maneira mais fácil.

    
por 25.05.2016 / 15:08
0

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

    
por 27.04.2011 / 00:36
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

Certifique-se de que, ao inicializar, a pasta de trabalho esteja sozinha no exemplo:

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

Esse código entra em o ThisWorkbook module , de modo que quando a pasta de trabalho é aberta, ela verifica imediatamente se é a única pasta de trabalho aberta nessa instância e, se não:

  1. Salvar a pasta de trabalho atual
  2. Definir wb atual como somente leitura (para evitar 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 linha de comando /x do Excel switch ), carregando outra instância da pasta de trabalho atual
  4. Fechar a 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.

    
por 03.10.2018 / 16:03