Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Saiba mais sobre considerações de programação para a Interface de Documento Único no Excel.
Comparando interfaces de um documento ou de vários documentos no Excel 2010 e no Excel 2013
Um novo recurso do Excel 2013 é a interface de documento único (SDI). A SDI é um método de organização de aplicativos da interface gráfica do usuário (IU) em janelas individuais que o gerenciador de janelas do sistema operacional manipula separadamente. No Excel 2013, cada janela do Excel pode conter apenas uma pasta de trabalho, e cada uma delas tem sua própria IU da faixa de opções (veja a Figura 1). Por padrão, quando você abrir uma nova pasta de trabalho, ela será exibida em outra janela do Excel, ainda que seja a mesma instância do Excel.
Figura 1. Interface de Documento Único no Excel 2013
Ela é diferente da interface de vários documentos (MDI), em que uma única janela pai é usada para conter várias janelas filhas aninhadas, e apenas a janela pai tem uma barra de menus ou de ferramentas. No Excel 2010, cada pasta de trabalho em uma única instância do Excel utiliza uma IU de faixa de opções comum (veja a Figura 2).
Figura 2. Interface de Vários Documentos no Excel 2010
O Excel 2010 utiliza o MDI, o que significa que existe uma única janela ao nível da aplicação que contém todos os livros abertos numa instância específica do Excel. As janelas da pasta de trabalho podem ser organizadas dentro da janela de aplicativo do Excel, todas compartilhando a mesma IU da Faixa de Opções. O SDI no Excel significa que cada livro terá a sua própria janela de aplicação de nível superior e tem a sua própria IU do Friso correspondente.
Observação
Não existe nenhuma opção de compatibilidade MDI no Excel.
Em sistemas com dois monitores, a SDI no Excel permite comparações lado a lado de duas pastas de trabalho arrastando cada pasta de trabalho para um monitor diferente. Cada pasta de trabalho trabalha de forma independente da outra.
Para ver a SDI e a MDI em ação, se você tiver o Excel 2010 e o Excel 2013 disponíveis, execute as etapas a seguir.
Para contrastar o número de processos para interfaces MDI e SDI
- No menu Iniciar do Windows, inicie o Excel 2010.
- Iniciar uma segunda ocorrência do Excel. Verifique se as duas janelas do Excel estão sendo exibidas.
- Na Barra de Tarefas do Windows, escolha e então selecione Iniciar o Gerenciador de Tarefas.
- Escolha a guia Processos e role para baixo até ver as duas entradas Excel.exe. Isto indica que, por predefinição, o Excel abre uma nova instância sempre que é chamada (duas instâncias do Excel).
- Feche as duas instâncias do Excel.
- No menu Iniciar do Windows, escolha o Excel 2013.
- Iniciar uma segunda ocorrência do Excel. Verifique se as duas janelas do Excel estão sendo exibidas.
- Inicie o Gerenciador de Tarefas novamente.
- No separador Processos, desloque-se para baixo até ver Excel.exe. Tenha em atenção que, apesar de ter aberto duas ocorrências do Excel, os dois livros estão contidos na mesma instância única do Excel.
Para ver o funcionamento da SDI e da MDI em uma instância do Excel, execute as etapas a seguir.
Para comparar o número de instâncias do Excel para interfaces MDI e SDI
- No menu Iniciar do Windows, escolha o Excel 2010.
- Escolha a janela do Excel para torná-la ativa e verifique se a Pasta1 é a pasta de trabalho atual.
- Pressione CTRL + N para abrir outra pasta de trabalho. Verifique se a Pasta2 é a pasta de trabalho atual.
- Minimize a Pasta2 e veja a Pasta1. Ambos os livros estão contidos na mesma instância do Excel.
- Feche o Excel.
- No menu Iniciar do Windows, escolha o Excel 2013.
- Escolha a janela do Excel para torná-la ativa e verifique se a Pasta1 é a pasta de trabalho atual.
- Pressione CTRL + N para abrir outra pasta de trabalho. Verifique se a Pasta2 está aberta em uma janela separada (mas na mesma instância do Excel).
- Feche o Excel.
Observação
Pode abrir várias instâncias do Excel com o seguinte comutador de linha de comandos: excel.exe /x. Essa opção inicia o Excel em um novo processo.
Neste artigo, discutiremos a implementação da SDI na IU do Excel e como ela afeta a programação no Excel.
O que mudou na Interface de Utilizador
Se observar atentamente depois de abrir um livro do Excel, deixará de ver os botões de estado da janela ( minimizar, maximizar e restaurar) no canto superior direito do friso. A Figura 3 mostra os botões de estado da janela que estão disponíveis no Excel e no Excel 2007. Como a janela principal agora está diretamente ligada a uma exibição de pasta de trabalho única ou de pasta de trabalho, não há mais a necessidade da IU de gerenciamento de janelas no Excel.
Figura 3. IU de estado de janelas no Excel 2010
Além disso, a partir do Excel, já não existem múltiplas janelas de livros dentro de uma única janela de instância do Excel, como na Figura 4.
Figura 4. Várias pastas de trabalho em uma janela de única instância do Excel
Recálculo e fórmulas
Os recálculos no Excel continuarão a ser "globais", o que significa que ocorrem em livros na mesma instância do Excel. As fórmulas que fazem referência a livros abertos na mesma instância do Excel participarão em cálculos em conjunto e partilharão o mesmo modo de cálculo do livro (automático, automático, exceto tabelas de dados e manual).
Na MDI, há somente uma barra de fórmulas para manipular todas as pastas de trabalho abertas naquela instância do Excel. Na SDI, há uma barra de fórmulas por pasta de trabalho. Para a SDI, durante a edição de referências entre planilhas em uma fórmula, as barras de fórmulas de pasta de trabalho de origem e de destino mostrará a fórmula que estiver sendo editada no momento, como mostrado na Figura 5.
Figura 5. Atualizando fórmulas entre pastas de trabalho
Painéis de Tarefas Personalizados
Os Painéis de Tarefas Personalizados anexados a uma janela de nível superior no MDI estão agora anexados à janela de um determinado livro no SDI. Mudar para um livro diferente irá ativar essa janela do livro, que não terá necessariamente o painel de tarefas personalizado anexado, a menos que o código do programador seja atualizado para apresentar especificamente o painel de tarefas personalizado desse livro.
Para resumir, como programador, vai querer:
- Certifique-se de que, para quaisquer livros onde pretenda mostrar o painel de tarefas personalizado, escreva código para o fazer explicitamente.
- Manipular explicitamente a atualização do estado do painel de tarefas personalizado em todas as instâncias se quiser que todos os painéis de tarefas personalizados reflitam o mesmo estado. Por exemplo, uma caixa de seleção é alternada para Ativado pelo usuário e você deseja que isso seja refletido em todos os outros painéis de tarefas personalizados em todas as instâncias do Excel.
Faixas de opções personalizadas
Os separadores e controlos do friso personalizados que assumem uma única IU do friso por instância de aplicação em versões anteriores do Excel serão agora propagados para cada friso do livro no Excel. Enquanto no MDI o programador do friso personalizado não precisava de considerar várias instâncias dos respetivos controlos em diferentes instâncias da IU do friso do Excel, com o SDI, terão de ter em conta esta situação.
Se quiser manter todos os controlos de IU do friso no mesmo estado em livros abertos, terá de:
- Garantir que o código consiga percorrer as janelas de pasta de trabalho e atualizar o estado dos controles.
OU
- Armazenar em cache o estado dos controles de forma que quando o usuário alterne para outra pasta de trabalho, esse evento possa ser capturado e os controles atualizados como parte da alternância de janela.
Além disso, considere o caso em que desenvolve código para adicionar um controlo de IU personalizado ao utilizar Application.Commandbar para aceder ao friso. Quando você tentar acessar esse controle posteriormente, seu código precisará responder pelo fato de que a pasta de trabalho ativa poderá não ser a mesma pasta de trabalho à qual você adicionou o controle.
Considerações sobre o código VBA
Com a mudança para o SDI, todos os métodos, eventos e propriedades ao nível da aplicação do Excel permanecem inalterados e funcionam da forma que têm nas versões anteriores do Excel (por exemplo, Application.ActiveWindow, Application.Windows, etc.).
No Excel, todos os métodos de janela, eventos e propriedades ao nível do livro funcionam agora na janela de nível superior (por exemplo, o Workbook.WindowActivate evento continua a ser acionado quando muda para um livro específico, o Workbook.Resize evento continua a ser acionado quando esse livro é redimensionado eThisWorkbook.Windows(1).Height, ThisWorkbook.Windows(1).Widthpor exemplo, , ThisWorkbook.Windows(1).Left, ThisWorkbook.Windows(1).Righte ThisWorkbook.Windows(1).MinimizeThisWorkbook.Windows(1).Maximize assim sucessivamente funcionará na janela de nível superior do livro ativo).
Os casos especiais estão listados na tabela a seguir.
Tabela 1. Comportamento do Modelo de Objeto com a SDI
| Função | Descrição | Implicações da SDI |
|---|---|---|
Application.Visible |
Retorna ou define um valor Boolean que determina se o objeto será visível. Leitura/gravação. | Se todas as janelas estiverem ocultas:
|
Application.ShowWindowsInTaskbar |
Verdadeiro se existir um botão separado da barra de tarefas do Windows para cada livro aberto. O valor padrão é True. Boolean de leitura/gravação. | Esta definição foi preterida no Excel. |
Application.Caption |
Retorna ou define um valor String que representa o nome exibido na barra de título da janela principal do Microsoft Excel. | Atualiza todas as janelas daquela instância do Excel. |
Application.Hwnd |
Retorna um Long indicando o identificador da janela principal da janela do Microsoft Excel. Somente leitura. | Irá devolver a alça da janela ativa. |
Application.FormulaBarHeight |
Permite que o usuário especifique a altura da barra de fórmulas em linhas. Long de leitura/gravação. | Funciona na janela da pasta de trabalho ativa atualmente; nem todas as janelas para esta instância do Excel. |
Application.DisplayFormulaBar |
True se a barra de fórmulas estiver visível. Boolean de leitura/gravação. | Funciona em todas as janelas desta instância do Excel. |
Workbook.Windows |
Retorna uma coleção Windows, que representa todas as janelas da pasta de trabalho especificada. Object do Windows somente leitura. | Nenhuma alteração no comportamento. Retorna a coleção de janelas para esta pasta, como painéis de tarefas e exibições adicionais. |
Workbook.WindowResize |
Ocorre quando qualquer janela de pasta de trabalho é redimensionada. | Nenhuma alteração no comportamento. É disparado quando uma janela de pasta de trabalho (o nível superior) é redimensionada. |
Window.Caption |
Retorna ou define um valor Variant, que representa o nome que aparece na barra de título da janela do documento. | Nenhuma alteração no comportamento. |
Workbook.Protect(Password, Structure, Windows) |
Protege uma pasta de trabalho de forma que ela não possa ser modificada. | Independentemente do valor do parâmetro Windows (True ou False), a proteção de estrutura de janela NÃO será habilitada. Nenhum erro de tempo de execução será exibido caso True seja especificado, mas essa parte da chamada ao procedimento retornará um NO-OP. |
Observação
Não há alterações necessárias no código personalizado para que os comandos XLM continuem a funcionar como esperado na SDI do Excel.
Preterindo a opção Janelas de Proteger Pasta de Trabalho
Na SDI, cada pasta de trabalho tem sua própria janela principal que você pode restaurar, minimizar e fechar. Para minimizar qualquer confusão que possa encontrar ao não estar prestes a mover, redimensionar ou fechar esta janela de nível superior, a opção Windows na funcionalidade Proteger Livro no Excel já não está disponível (consulte a Figura 6). A Tabela 2 descreve essa ação em mais detalhes.
Figura 6. A opção Janelas da caixa de diálogo Proteger Pasta de Trabalho está desabilitada
| Action | Comportamento |
|---|---|
| Abrir uma pasta de trabalho criada em uma versão anterior do Excel, com a Proteção de Janela habilitada | O Excel reconhecerá a localização da janela e os atributos de tamanho, mas não impedirá o utilizador de organizar ou fechar estas janelas. |
| Exibir a caixa de diálogo Proteger Estrutura e Janelas | O Excel apresentará a caixa de diálogo, mas com a opção Windows desativada . |
Soluções para problemas de SDI
A seção a seguir oferece soluções alternativas para problemas que você poderá encontrar ao usar a SDI.
Não é possível fechar um livro ao clicar no botão vermelho "X" Fechar quando esse livro é aberto programaticamente através de um formulário de utilizador modal. Para contornar esse problema, sugere-se que você adicione o código a seguir ao procedimento de evento Layout do formulário de usuário e então abra o formulário de usuário como sem janela restrita.
Private Sub UserForm_Layout() Static fSetModal As Boolean If fSetModal = False Then fSetModal = True Me.Hide Me.Show 1 End If End SubOutra opção é abrir a janela da pasta de trabalho, ativar qualquer outra janela e então reativar a janela da pasta de trabalho. Agora você deverá ser capaz de fechar a pasta de trabalho usando o botão Fechar.
Suponha que o seu código VBA abra várias pastas de trabalho e use a propriedade DataEntryMode para controlar a entrada de dados e o fechamento da pasta de trabalho. No modelo SDI do Excel, uma vez que cada livro está contido no seu próprio processo, a propriedade DataEntryMode utilizada num livro não reconhece a existência de outro livro e, portanto, tem pouco ou nenhum efeito na respetiva interação. Para contornar esse problema, há algumas opções. Pode ocultar os livros ou folhas de cálculo adicionais ao utilizar
Window.Visible = FalseouSheet.Visible = False, respetivamente. Detete e cancele quaisquer eventos de encerramento comWorkbook.BeforeClose(Cancel) = True.As barras de ferramentas adicionadas aos livros do Excel através do código da barra de comandos e dos ficheiros XLA só serão apresentadas depois de fechar e reabrir o livro. A utilização de barras de comando para personalizar a IU foi preterida a partir do Excel 2007. A solução ideal é personalizar a IU da faixa de opções usando arquivos XML como descrito em detalhes no artigo Customizing the 2007 Office Fluent Ribbon for Developers
Outra opção é utilizar um evento ao nível da aplicação para detetar a abertura de novos livros e, em seguida, utilizar
Application.Windowsem vez de livros para adicionar o controlo do friso. A seguir, o código de exemplo que pode ser usado para fazer isso.Private Sub Workbook_Open() ToolBarsAdd End Sub Sub ToolBarsAdd() Dim oBar As CommandBar ToolBarsDelete Set oBar = Application.CommandBars.Add(Name:="MyToolBar") ' With oBar With .Controls.Add(Type:=msoControlButton) .OnAction = "SayHello" .FaceId = 800 End With End With oBar.Visible = True End Sub Sub SayHello() MsgBox "Hello from '" & ActiveWorkbook.Name & "'" End SubO código a seguir seria então usado para remover a barra de ferramentas antes do fechamento da pasta de trabalho.
Private Sub Workbook_BeforeClose(Cancel As Boolean) ToolBarsDelete End Sub Sub ToolBarsDelete() Dim wnd As Window On Error Resume Next For Each wnd In Application.Windows wnd.Activate Application.CommandBars("MyToolBar ").Delete Next wnd End SubNo Excel 2010, um formulário de utilizador de modelação é apresentado como a janela de nível superior sobre todas as janelas do Excel por predefinição. No Excel 2013, um formulário de usuário sem janela restrita só estará visível em cima da janela da pasta de trabalho que estava ativa quando o formulário de usuário foi exibido. Jan Karel Pieterse (Excel Most Valuable Professional) fornece uma explicação sobre o problema e uma solução na sua página Web em https://www.jkp-ads.com/articles/keepuserformontop.asp.
Resumo
A nova Interface de Documento Único do Excel 2013 facilita o trabalho com várias pastas de trabalho. Você pode até arrastar as pastas de trabalho para monitores diferentes, se for conveniente. Você só precisa se lembrar de que há apenas uma janela principal e um menu de IU da faixa de opções por pasta de trabalho. Isso poderá exigir que você atualize todos os códigos existentes para armazenar em cache o estado dos controles e as configurações à medida que passa de pasta de trabalho para pasta de trabalho.
Confira também
- Abrir livros do Excel em janelas separadas e vê-los lado a lado
- Interface de documento único (SDI) do Excel 2013: Como reconstruir os painéis de tarefas para o suportar
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.