Recebi uma pergunta de um leitor querendo saber como fazer para que o Excel abra um link da internet sempre que a planilha for executada, da mesma forma que acontece com as planilhas que disponibilizamos para download aqui.
Então vamos aprender isso na aula de hoje. E mais: vamos aprender não só como executar algum evento na abertura da planilha, como no fechamento da mesma, entre outros.
Como você já deve ter imaginado, faremos uso de VBAs, então que tal conferir as aulas iniciais do nosso curso gratuito de criação de macros? É só clicar aqui.
Executando evento ao abrir planilha
Vamos abrir nossa janela de edição de códigos com o alt + F11, dar 2 cliques em "EstaPasta_de_trabalho" e colar o seguinte:
Private Declare Function ScriptInternet _
Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal Operation As String, ByVal Filename As String, _
Optional ByVal Parameters As String, Optional ByVal Directory As String, _
Optional ByVal WindowStylw As Long = vbMinimizedFocus) As Long
Private Sub Workbook_Open()
Call ‘nome da função
End Sub
A primeira parte é essencial e é necessária para chamar as bibliotecas que executarão a operação. Caso você tenha instalado o Office de 64 bits terá problema, pois ele não executa essas bibliotecas. A solução deste problema pode ser conferida aqui. Seguindo?
Logo abaixo temos o "call ‘nome da função. Ali colocaremos, por exemplo, "abrir". Essa será a função a ser chamada. Logo abaixo, então, na mesma janela, iremos declarar esta função.
Public Sub Abrir()
Dim iAcesso As Long
iAcesso = ScriptInternet(0, "Open", "www.aprenderexcel.com.br")
End Sub
Obviamente que a função deve ter o mesmo nome, certo? Caso você queira configurar a abertura de um site, é só substituir o www.aprenderexcel.com.br por www.google.com, por exemplo.
Veja como ficou na prática:
Bom, mas como dissemos antes você pode configurar outras funções, como por exemplo, abrir o Internet Explorer ao invés do site. É só fazer algumas alterações na parte final e pronto:
Public Sub AbrirIE()
Dim iAcesso As Long
iAcesso = ScriptInternet(0, "Open", "C:Program Files (x86)Internet Exploreriexplore.exe")
End Sub
Mas e aí, serve só para "abrir coisas"? Não, você pode configurar também para ser exibida uma mensagem de boas-vindas. O código seria:
Public Sub Mensagem()
Dim iAcesso As Long
MsgBox "Seja bem vindo ao Microsoft Excel!"
End Sub
Executando evento ao fechar planilha
Aqui a configuração será quase igual, e você só mudará 1 campo. Note que antes, escrevíamos Private Sub Workbook_Open(). O que vamos fazer é apenas mudar essa linha para Private Sub Workbook_BeforeClose(Cancel As Boolean). O resto fica igual.
Confira um código completo para salvar a planilha antes de fechar e garantir que nenhuma alteração será perdida:
Private Declare Function ScriptInternet _
Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal Operation As String, ByVal Filename As String, _
Optional ByVal Parameters As String, Optional ByVal Directory As String, _
Optional ByVal WindowStylw As Long = vbMinimizedFocus) As Long
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call salvar
End Sub
Public Sub salvar()
Dim iAcesso As Long
ThisWorkbook.Save
End Sub
E se você quisesse dar uma mensagem de tchau ao usuário poderia fazer com este código:
Public Sub tchau()
Dim iAcesso As Long
MsgBox "Até mais =D"
End Sub
As possibilidades são ilimitadas.
Recursos de tempo
Além disso é possível programar para executar a operação com critérios de tempo. Por exemplo, chamar a mensagem de bem-vindo após 10 segundos que a planilha for executada.
Já explicamos como fazer este processo aqui, então não vamos aprofundar a discussão. Vamos apenas mostrar na prática o exemplo acima:
Private Sub Workbook_Open()
Call timer
End Sub
Public Sub timer()
Application.OnTime Now + TimeValue("00:00:10"), "mensagem" ' tempo esperado até a execução da função
End Sub
A única diferença é que a função "mensagem" deverá estar em um MÓDULO.
Se tiverem també alguma sugestão de post, é só mandar ;)
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.