Tag Archives: Salvar

VBA – Forçando o diretório no Salvar Como (Dialogs)

Participei de uma discussão em algum lugar que comentava sobre a dúvida do título. Algumas alternativas eram dadas para solucionar o problema, que funcionavam inclusive, mas achei a mais elegante de todas a seguinte:

Sub SalvarComoEmOutroLocal()
 Application.Dialogs(xlDialogSaveAs).Show ("C:\temp")
End Sub

Em detalhes, o código faz uma chamada a coleção de caixas de diálogo do Excel (iniciadas por “xl”), selecionando especificamente a “Salvar Como”, ou “Save As”, passando como primeiro argumento caminho para o qual ela vai inicialmente apontar, no caso, “C:\temp”, que podia ser qualquer outro.

Registro pelo fato de ter sido uma solução simples e direta, que resolver o problema. Em outro post falarei mais sobre os Dialogs do VBA no Excel.

Bom proveito!

Excel – Forçando o salvamento da planilha sem intervenção do usuário

O ambiente

A partir do momento em que aprimoramos nossos conhecimentos em uma ferramenta, torna-se confortável tirar proveito das possibilidades que esta traz, e não é diferente com o Microsoft Excel. As planilhas ficam mais elaboradas, de forma a agilizar os tarefas mais rotineiras e também tornar o trabalho mais profissional. Mas enquanto estas planilhas estiverem restritas ao uso de quem as criou, não é trivial notar a possíveis falhas ou inconsistências que esta contém por estarmos acostumados com elas.

Quando se desenvolve planilhas que serão utilizadas por outros usuários, os cuidados a serem tomados tornam-se muito importantes, pois disso dependerá o bom funcionamento de seu trabalho. Geralmente, este é o próximo passo dado por quem aprimora seus conhecimentos em uma ferramenta. Com o Excel, você provavelmente deverá desenvolver planilhas que serão utilizadas por outras pessoas com pouco conhecimento na ferramenta. Por isso estas planilhas devem prever uma série de situações a fim de garantir que o objetivo da planilhas seja atingido sem falhas.

Neste exemplo, discutiremos uma necessidade comum neste ambiente que é o de salvar planilhas automaticamente sem intervenção do usuário. Este é apenas um exemplo de situação que pode ser tratado para garantir a consistência de informações em uma planilha. A idéia é garantir que ao terminar de usar a planilha, todas as informações sejam salvas.

O problema

Tendo que contar com a atenção do usuário é algo praticamente impossível. Não por incompetência ou falta de vontade, mas porque estes estão preocupados com seu trabalho em si. A planilha deve ser um facilitador, e não algo que impeça ou torne maçante seu trabalho. Dificultar o a entrada de dados, efetuar cálculos de forma errada e perder os dados são problemas comuns que geram grande parte da irritação dos usuário no uso de planilhas. Tratar o salvamento automático da planilha auxiliará a evitar perda equivocada dos dados da planilha.

Para tratarmos esse problema, será necessário um pouco de código VBA. Mesmo que o leitor não conheça sobre Macros ou programação, não haverá problemas se seguir as instruções passo a passo para fazer com que tudo funcione e sem grande problemas, adicionar esta funcionalidade em suas planilhas.

O trecho de código em VBA que salva a planilha aberta atualmente é mostrado abaixo.

1
ThisWorkbook.Save

Executar este trecho de código causa o mesmo efeito de pressionar o botão Salvar na barra de ferramentas. Como pode ser notado, é bem simples promover o salvamento da planilha via código VBA. O que fará a grande diferença é executar este bloco de código em determinadas ocasiões, garantindo que as informações inseridas pelo usuário sejam automaticamente salvas.

Uma situação bastante comum é tentar conduzir o usuário a efetuar a operação de fechamento ou encerramento da planilha por outro caminho, por exemplo, colocando um botão na barra de ferramentas ou mesmo um botão de comando (da barra de ferramentas Formulário). Bastaria induzir o usuário com uma mensagem ou ícone a clicar neste botão toda vez que fosse necessário executar uma ação importante, como por exemplo, inserir um novo dado, trocar de planilha ou efetuar um filtro.

As situações podem ser muitas. A planilha para download possui alguns exemplos destas situações.

A solução definitiva (ou quase)

A ação que mais tem mais efeito sobre a perda de dados por usuários e garantir que a planilha seja salva quando o usuário fechar a planilha. Para promover esta funcionalidade, basta seguir os seguintes passos:

Em uma planilha do Excel, preferencialmente existente, ative o VBA indo ao menu Ferramentas->Macro->Editor do Visual Basic (ou clicando o atalho Alt+F11).
Na janela de Projeto – VBA Project, navegue pelo item VBAProject->Microsoft Excel Objetos e clique duas vezes no item EstaPasta_de_trabalho para abrir a janela de código a direita.

Janela de Projeto VBA

Na janela de código aberta, na parte superior existem duas caixa de combinação, que listam os objetos disponíveis. Na caixa da esquerda, seleciona o item Workbook que representa a pasta de trabalho atual.

Janela de Código VBA

Isso automaticamente gera um bloco de código automaticamente. Ignore este bloco de código pois ele não fará parte de nosso exemplo e não surtirá nenhum efeito sobre ele. Agora, na caixa da direita, com o item Workbook selecionado na caixa esquerda, selecione o item BeforeClose.

Janela de Código VBA

Isto fará com que o seguinte código seja gerado:

1
2
3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
End Sub

Este bloco de código responde a um evento da pasta de trabalho, que como o próprio nome diz, ocorre um instante antes da desta ser fechada. Este é o instante ideal para efetuar a ação que queremos. O código final que executa a tafera fica desta forma.

1
2
3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     ThisWorkbook.Save
End Sub

Não fizemos nada mais do que adicionar o código que salva a pasta de trabalho ao evento descrito acima. Para fazer um teste na funcionalidade, digite algum valor em qualquer lugar da planlha e em seguida clique no botão fechar. A planilha será fechada sem que nenhuma mensagem seja mostrada. Normalmente o Excel emitiria uma mensagem perguntando se gostaria de salvar a modificações realizadas. Abra a planilha e veja que as modificações foram salvas automaticamente.

Conclusão

Foram apresentadas algumas situações em que ocorrem perda de dados na maioria das vezes por falta de atenção no uso das planilhas de Excel no dia-a-dia. A solução apresentada visa evitar que esse tipo de situação ocorra com tanta frequência. Com ela, é possível auxiliar soluções profissionais e também a aqueles usuários mais distráidos.

Comentários

O Excel dispõem do recurso de auto-recuperação, porém, este garante a recuperação da pasta de trabalho em caso de mau funcionamento do aplicativo Microsoft Excel ou até mesmo do próprio Windows. Portanto, não contempla situações de guarda correta de dados, até porque utilizar o recurso de auto-recuperação exige um certo conhecimento por parte do usuário.