VBA – Evitando mensagens de alerta ao abrir e fechar arquivos

Veteranos do VBA sabem com alguma facilidade como realizar a manipulação de arquivos, por exemplo, do Excel, para abrir, ler dados e em seguida fechar o arquivo.

Um exemplo:

Set wbook = Application.Workbooks.Open("Arquivo.xls")
wbook.Sheets("PlanilhaOrigem").Range("A1:B10").Copy
ThisWorkbook.Sheets("`PlanilhaDestino").Paste
wbook.Close

Mas, vou aproveitar este caso específico que gera um pequeno problema. Pelo fato de copiar os dados da Arquivo.xls, ao executar a rotina Close, a mensagem:

“Deseja manter os conteúdos na área de transferência?”

O mesmo aconteceria se você alterasse o arquivo destino, com a diferença de que a mensagem seria a de salvar ou não o arquivo.

Como fazer para evitar essas mensagens? Simples!

Antes da instrução Close, basta colocar o seguinte:

Application.DisplayAlerts = False

O que a instrução faz? Ela inibe as mensagens de alerta do Office, executante determinadas ações sem que as telas de aviso interfiram no fluxo de execução do código.

A única atenção é não utilizá-lo indiscriminadamente, já que, se os avisos aparecem, é porque algo está potencialmente errado ou sendo perdido. Mas caso saiba exatamente o que está acontecendo no seu código, vá em frente.

Bom proveito!

Comentários

comentários

2 thoughts on “VBA – Evitando mensagens de alerta ao abrir e fechar arquivos”

  1. Olá, eu tenho uma dúvida, não tem muito haver com o tópico mas, eu tenho um form com um botão, e queria que quando clica-se no botão ele abri-se um ficheiro excel que tenho no computador.
    No código do botão tenho:

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim xl As New Excel.Application
    Dim work As workbook
    work = xl.Application.Open(“C:\123.xlsx”)
    End Sub

    Sei que não está completo só que já alterei tantas vezes e nada, pois diz sempre que o caminho é inválido e tenho o ficheiro exactamento no local onde indico.

    Cumprimentos

Comments are closed.