Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por Jeczei
Posts
#74173
Caros, bom dia!
Sempre ao fechar a planilha, todas as demais que foram abertas anteriormente, ou após, também estão sendo fechadas em bloco, juntas. Já tentei algumas variações nos comandos, mas sem sucesso em resolver esta situação.
É possível resolver ? Segue o código da sub.
Obrigado antecipadamente

Sub Sair()

ThisWorkbook.NoEvents = True

Application.DisplayAlerts = False

Application.Visible = False

ActiveWorkbook.Save
ActiveWorkbook.Close

end sub
Por osvaldomp
#74178
Jeczei escreveu: 04 Mar 2024 às 10:55 Sempre ao fechar a planilha, todas as demais que foram abertas anteriormente, ou após, também estão sendo fechadas em bloco, juntas.
Os arquivos não estão sendo fechados e sim ocultados por este comando ~~~> Application.Visible = False
Basta excluí-lo.

Ainda, este outro comando não me parece algo compatível com linguagem VBA ~~~> ThisWorkbook.NoEvents = True
Pode embrulhar e colocar na lixeira.
Por Jeczei
Posts
#74180
Boa noite Oswaldo,
Obrigado pelo retorno

Coloquei este comando (Application.Visible = False) como solução para ao fechar a planilha voltar ao prompt do windows, pois não encontrei outra forma de sair completamente do excel. Se tiver jeito, por favor me oriente.

Sobre o outro comando (ThisWorkbook.NoEvents = True) foi a solução que encontrei para não permitir o usuário fechar a planilha pelo X superior da tela e sim pela macro de saída que faz alguns procedimentos. Idem aqui, se houver outra forma.

Abraço
Por osvaldomp
#74181
1. o código que você postou Salva e Fecha o arquivo ativo, e o arquivo ativo pode ou não ser o arquivo que contém a macro que está sendo executada, então se você quiser garantir que o arquivo a ser fechado é o arquivo que contém a macro, independente se ele é ou não o arquivo ativo, substitua as duas ocorrências de ActiveWorkbook por ThisWorkbook.

2. não sei o que exatamente você quis dizer com a expressão "sair completamente do Excel".
Genericamente, ao fechar o arquivo de interesse, o Excel permanecerá carregado se houver ao menos mais um arquivo Excel aberto, se não, o Excel será descarregado juntamente com o único arquivo carregado e ora fechado.
Então, se você quiser fechar o arquivo de interesse e quiser manter outros arquivos Excel eventualmente carregados então basta excluir o comando Application.Visible = False, dessa forma os demais arquivos permanecerão carregados e visíveis.
Por outro lado, se você quiser descarregar TODOS os arquivos Excel eventualmente abertos ao fechar o arquivo de interesse, então utilize Application.Quit no lugar de Application.Visible = False.
Ao fechar um arquivo Excel, automaticamente o Windows irá colocar como janela ativa a janela que estava ativa antes de ativar o arquivo Excel. Agora, se você quiser fechar o arquivo e automaticamente ativar sempre a Área de Trabalho do Windows ("sair completamente do Excel"), para esse caso eu não conheço uma solução.

3. sobre o comando ThisWorkbook.NoEvents = True, como comentei antes, esse não é um comando nativo do VBA, talvez seja um Suplemento ou uma Função elaborada pelo usuário, e se estiver funcionando conforme desejado, então ok.

dica - na documentação da MS sobre o Excel, é tratado por Arquivo Excel ou por Pasta de Trabalho Excel. Um arquivo Excel ou uma Pasta de Trabalho Excel contém uma ou mais planilhas. Então o que se abre/fecha é Arquivo e não planilha. E não existem Aba1, Aba2, Aba3, ... mas sim Plan1, Plan2, Plan3, ... nas versões mais antigas, ou Planilha1, Planilha2, Planilha3, ... nas versões mais recentes.

Retorne se ainda assim não resolve.
Por Jeczei
Posts
#74183
Bom dia Oswaldo,
Obrigado pelo seu tempo e atenção

Sobre o item 1, já fiz o ajuste conforme sua recomendação.

Item 2, último parágrafo - O que desejo, ou desejava (após ler seu comentário que não conhece solução) era após fechar o arquivo, retornar para a área de trabalho do Windows sem precisar fechar o Excel.
Não consegui anexar a imagem sobre o que ocorre após fechar o arquivo, pois este editor parece não permitir anexos em formato png ou jpg.

Item 3 - Não utilizo nenhum complemento ou função proprietária, logo não sei o que ocorre, mas vem funcionando bem para resolver a situação de não permitir o usuário fechar o arquivo pelo "x" superior direito. Utilizo o Office 365.

Abraço
Por osvaldomp
#74185
Olá, @Jeczei.

Para acessar a Área de Trabalho do Windows manualmente não é necessário fechar o Excel, basta apertar juntas as teclas Windows+d (a tecla Windows é a que tem o logo do Windows).

Para acessar a Área de Trabalho via VBA experimente acrescentar ao seu código o comando abaixo que encontrei na NET.
CreateObject("shell.application").minimizeall 'acrescente esta linha ao seu código, logo acima do comando que salva
ActiveWorkbook.Save

Sobre o comando ThisWorkbook.NoEvents = True, só como curiosidade, veja se localiza alguma Função elaborada pelo usuário ~~~> no editor de VBA selecione NoEvents | aperte Ctrl+l | marque Projeto atual | clique em Localizar próxima
Por Jeczei
Posts
#74186
Boa noite Oswaldo,

O comando não funcionou por completo. Minimiza o editor VBA , porém a planilha continua visível (usei o modo depuração, passo a passo) e ao passar pelo ActiveWorkbook.Save, fecha o arquivo mantendo o Excel ativo (conforme as demais tentativas)

Sobre o ThisWorkbook.NoEvents, encontrei isso no início do código:

Option Explicit
Public NoEvents As Boolean

Abraço
Por Jeczei
Posts
#74188
Oswaldo, seguindo a sua sugestão, encontrei um código na web que aparentemente resolveu o issue. Segue abaixo

If Application.Workbooks.Count = 1 Then 'Close Excel application
ThisWorkbook.Save
Application.Quit
Else 'Close the active workbook
With ActiveWorkbook
.Close Savechanges:=True
End With
End If


* créditos para o Joey
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord