Arquivo

Posts Tagged ‘Vba Automático’

Programar Abertura de Planilha Automaticamente

Como programar abertura de planilha automaticamente? Essa é uma pergunta constante nos sites de ajuda VBA.
Tanto que quando recebo e-mails sobre esse assunto até dou duas opções:

  • Executar o excel automaticamente por código vba
  • Abrir o excel automático pelo agendador do Windows

Neste artigo vamos ver a segunda opção, pois a primeira pode ser vista em outros sites e apesar de ser mais simples é necessário que o processo do Excel fique aberto.

Você irá perceber que para funcionar quase não precisa de código, mas como envolve uma quantidade de passos eu coloquei várias imagens!

 

Programar abertura de planilha

É muita tecnologia?!

 

Então antes de continuar detalhando sobre o assunto, é de convir, mesmo nunca tendo feito este código, que a idéia é muito interessante…

Deixar o Excel tão automático que não é preciso nem abrir!!!

E podemos expandir ainda mais a partir do assunto principal:

  • Abrir periodicamente: diário, semanal, mensal
  • Repetidamente conforme minutos ou horas
  • Ao inicializar o computador
  • E etc

 

Programar abertura de planilha

 

Antes de descrever cada passo é necessário enxergarmos o processo como um todo:

 

abrir excel automático

 

Etapa 1 dentro do Excel – Código Principal

 

foco no código

Então vamos começar pelo fim do processo ou seja, com o código principal. Para fins didáticos meu procedimento será apenas uma mensagem.

Então irei criar um módulo conforme imagem abaixo.

Aperte ALT + F11 em sua planilha e clique com botão direito em cima da Plan1 e selecione Inserir > Módulo

 

 

inserir modulo vba

 

Dentro deste módulo (tela branca que irá aparecer) vou inserir minha funcionalidade principal:

 

Sub EXECUTAR_AUTOMATICO()

   'MEU CÓDIGO PRINCIPAL
   MsgBox "Olá Bem vindos ao ExceleVBA.com.br"

   'CÓDIGO PARA FECHAR PLANILHA APÓS EXECUTAR
   Application.DisplayAlerts = False
   Application.Quit

End Sub

Importante: Perceba que nas linhas acima eu programei para o Excel fechar após realizar sua principal função. Isso é necessário para não ficar nenhum processo aberto do Excel.

 

 

Etapa 2 dentro do Excel – Código Secundário

 

executar vba automático

 

Este procedimento irá executar assim que abrir a planilha e é responsável por chamar o procedimento principal.

Então vamos dar dois cliques onde diz EstaPasta_de_trabalho e inserir o código abaixo:

 

Private Sub Workbook_Open()

   Call EXECUTAR_AUTOMATICO

End Sub

 

Percebam que EXECUTAR_AUTOMATICO é o nome do código principal feito na etapa 1.

Agora é necessário salvar a planilha, no meu caso vou chamar de Plan_Automatica.xls

Importante: Sempre que precisei eu usei a extensão .xls. Ao fazer testes com xlsm o agendador não abriu/executou a planilha.

 

 

Etapa 3 no Windows – Agendador de Tarefas

 

agendador de tarefas excel

 

Usando o Windows 7, 8 ou 10 você pode apertar no teclado a tecla Windows e digitar “agendador de tarefas”.

tecla windows

 

Assim que você clicar no “Agendador de Tarefas” irá abrir uma tela como imagem abaixo:

 

tutorial windows macro

 

No menu da direita selecione a opção “Criar tarefa…”

Na próxima tela que abrir preencha os dados conforme os campos marcados na imagem abaixo.

 

macro automática

 

Em seguida selecione a guia “Disparadores” e clique em “Novo”. Nesta tela vamos marcar qual a frequência que nossa planilha automática irá abrir.

 

macro abrir sozinha

 

Então nesta imagem eu selecionei os campos necessários para repetir a execução da planilha uma vez a cada dia iniciando as 23h.

Agora na próxima guia “Ações” vamos indicar o que desejamos abrir. Então clique em “Novo” e demonstre onde a sua planilha está salva!

 

abrir vba automatico

 

Observação: Se o seu Windows for 64 bits e o seu excel for 32 bits então no campo do endereço do programa adicione o seguinte código:

%systemroot%\Syswow64\cmd.exe /C “endereço da planilha”

Dúvida ver vídeo explicativo.

A guia seguinte é a “Condições” e esta podemos pular (mas é bom você dar uma olhada).

E a última guia é a “Configurações” e é interessante você olhar o último campo que pergunta o que fazer caso o processo do Excel ainda esteja aberto (lembra que na etapa 1 nós fechamos o Excel)

 

coo usar o agendador de tarefas

 

E com isto finalizamos os passos para programar abertura de planilha automaticamente.

Agora é só curtir e caso tenha dúvidas veja o vídeo!

 

Vídeo Explicativo

 

Valores de slicer com VBA

Olá pessoal!!

Após fazer meu primeiro artigo sobre segmentação de dados (slicer) fiquei com a idéia de fazer um segundo artigo.

No primeiro artigo mostrei como manipular totalmente um slicer e dando continuidade quero comentar como verificar valores de slicer com vba, afinal nada melhor para embelezar a planilha e encantar os olhos de todos.

Então sem mais delongas segue abaixo:

 

Valores de slicer com VBA

 

Verificar valor selecionado no slicer com vba

Sub valor_slicer()

'este é o codigo de um slicer qualquer com um valor de exemplo selecionado
With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_PRODUTO")
.SlicerItems("Celular").Selected = True
.SlicerItems("Livros").Selected = False
.SlicerItems("Tablets").Selected = False
End With

'aqui então começa o verdadeiro codigo...
'crio um objeto com o slicer que quero operar
Set seg = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_PRODUTO")

'utilizo de um for para varrer os itens e ver qual o selecionado
'caso encontre um ou mais entao pego seu valor
For Each teste In seg.SlicerItems
If teste.Selected Then
MsgBox teste.Value
End If
Next

End Sub

 

Selecionar valor no slicer conforme texto em célula qualquer

Agora que tal deixar sua planilha com design mais automático? mais intuitiva para o cliente? 

Este código verifica em cada célula clicada se o valor é algum do slicer (segmentação de dados) e se for ele seleciona-o automaticamente.

 

Valores de slicer com VBA

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set i = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_PRODUTO")

If ActiveCell.Value = "TV" Then
i.ClearManualFilter
i.SlicerItems("Celular").Selected = False
i.SlicerItems("Livros").Selected = False
i.SlicerItems("Tablets").Selected = False
i.SlicerItems("tv").Selected = True

End If

End Sub

 

Segue video completo para maior entendimento

 

Atualizar Tabela Dinâmica Automático 2

 

Anteriormente havia feito o post “Atualizar Tabela Dinâmica (Sem Botão)” e conforme sugestão do Marlon que viu o post anterior eu estou colocando mais essa maneira para atualizar tabela dinâmica automático.

Neste post coloco um código que verifica em cada alteração de célula se pertence a tabela de dados (e que por sua vez também faz parte da tabela dinâmica).
Caso faça parte dos dados que nos interessa, o código aguarda 3 segundos (mas pode ser o tempo que você quiser) e chama a atualização da tabela dinâmica.

PARTE 1

 

atualizar_td2_1

 

 

 

 

 

 

 

 

 

 

Primeiro código deve estar na Plan que seus dados que fazem parte da tabela dinâmica estão, no meu caso coloquei tanto os dados como a tabela dinâmica  na Plan1.
Outro detalhe que deve ser observado na imagem acima é que o código será executado em cada mudança nas células da Plan1 (Worksheet change).

______________________________________________________________________________________

PARTE 1-2

atualizar_td2_2

Observem que a tabela de dados vai até a coluna 4 e até linha 9, por isso em cada mudança nas células é verificado se a alteração faz parte destas colunas e linhas

If Target.Column <= 4 And Target.Row <= 9 Then
...
End If

Caso faça parte será chamado outra “sub Atualiza_TD” que atualiza a tabela dinâmica após 3 segundos

Application.OnTime Now + TimeSerial(0, 0, 3), "Atualiza_TD"

Poderia ser horas ou minutos ou outros segundos qualquer  (0,0,3), eu coloquei 3 segundos

_________________________________________________________________________________

PARTE 2

atualizar_td2_3

 

No módulo fica a Sub que chamamos lá atrás na Plan1, o que ele faz é somente atualizar a tabela dinâmica.

No caso acima “Plan1” é onde está minha Tabela Dinâmica, e “TD_GENERO” é o nome da tabela dinâmica.

Caso tenha alguma dúvida de como colocar nome da Tabela Dinâmica ou outra dúvidas veja o vídeo abaixo.

__________________________________________________________________

Segue vídeo demonstrativo

 

 

 

 

 

Alterar Celula Automaticamente sem botão

 

Para alterar a celula automaticamente devemos inserir o codigo na plan1, não é em módulos

Alterar Celula Automaticamente

‘Este código altera o conteúdo da célula sem necessidade de ter um botão
‘Após inserir o número na célula A1 , irá exibir automaticamente na célula B1 o valor da célula A1 somando ele mesmo e dividindo por 2

 

Codigo para Alterar Celula Automaticamente

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then
   Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value / 2
End If

End Sub

Agora basta usar sua criatividade e usar este recurso do jeito que mais lhe agrada e assim deixar sua planilha mais intuitiva exemplo: como alterar uma tabela dinamica automaticamente

 

Segue vídeo de demonstração

 

 

Atualizar tabela dinâmica sem botão

De maneira simples demonstro como atualizar uma tabela dinâmica sem botão, automaticamente, e para funcionar:

  • A Tabela de dados, conteúdo, deve estar na Plan1
  • O código VBA abaixo e a tabela dinâmica deve estar no mesmo sheet (no caso abaixo no Plan2)

Desta maneira  ao alterar os dados na Plan1 e ao clicar no Plan2 irá atualizar automaticamente a tab. dinamica (Plan2)


Alterar Célula Automaticamente

 

Codigo Atualizar Tabela Dinâmica sem botão

 

Private Sub Worksheet_Activate()

'Lembrando que este código deve estar no Plan2 'PivotTable1, é o nome da tabela dinâmica
Sheets("Plan2").PivotTables("PivotTable1").RefreshTable

End Sub

 

Video Demonstrativo

 

 

 

 

 

Fechar planilha automático

O código abaixo permite que você coloque o tempo que achar mais adequado para fechar planilha automático ao ficar inativa! você decide o tempo!

Para dados sigilosos é uma excelente idéia!

Bem, como nesse caso o código é segmentado achei melhor disponibilizar o código em imagens.

 

Define tempo para fechar

Adiciona o tempo que você acha ideal e faz a verificação ao abrir o arquivo

Fechar planilha automáticamente

 

 

Incrementa tempo ao alterar dados

Verifica cada alteração dentro da planilha, adicionando maior tempo em cada uma alteração.

Fechar planilha automático

 

 

Fechar planilha automático

Nessa etapa se o tempo estiver expirado,  será chamado a procedure de salvar e fechar a planilha.

Fechar planilha automático