Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Executar Macro ao receber novos dados externos (conexão com GoogleForms)

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
mapires23
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Seg Abr 06, 2020 11:42 pm

Executar Macro ao receber novos dados externos (conexão com GoogleForms)

Mensagem por mapires23 »

Boa Noite.

Tenho uma Planilha que recebe dados externos de uma conexão com um Formulário do Google Forms. Cada formulário preenchido chega na planilha como uma nova linha nessa tabela de importação.

A minha tabela hoje ocupa da linha B1:T1(cabeçalho) até a linha B29:T29 (ou seja, já tenho 28 linhas de dados). Quando novos dados do Google Form forem recebidos, a cada formulário enviado, uma nova linha desses planilha sera preenchida.

O lance é que a cada linha recebida eu preciso executar uma macro (que realiza alguns procedimentos e exporta um dado por email). A parte de importação automatizada dos dados do google form para o excel está ok. A parte de calculos e exportar dados por email também. O que não estou conseguindo fazer é acionar essa macro de calculo e exportação a partir da entrada de novos dados na planilha específica.

Pensando de forma mais clara e direta, o que preciso é uma programação que monitore a celula $B$30, por exemplo, e assim que ela receber dados (ou seja, mudar de valor) então ative a macro de cálculos. Feito isso, a programação deve então monitorar a celula seguinte, no caso a $B$31 e novamente acione a macro de cálculos assim que esta célula mude de valor e assim sucessivamente com a $B$32... $B$33... $B$34... eternamente, pra mim resolveria... Um dado importante: cada formulario do Google Form preenche apenas uma linha e dados da coluna B nunca vêem em branco, outras colunas podem vir sem dados, mas a coluna B não, por isso acredito que seja a coluna certa para monitorar e fazer o trigger da macro de cálculos.

Tentei fazer algo como:

Private Sub Worksheet_Change(ByVal Target As Range)

MacroCalculo()

End Sub

Mas o Excel, ao fazer o refresh dos dados externos (a cada 1 minuto), considera que houve alteração nas células da tabela de importação, mesmo que não haja novos dados, e daí a Macro é ativada mesmo quando não deveria...

Bom... acho que é isso. alguém pode me ajudar? Posso mandar mais detalhes...

Obrigado!

Marcus


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Executar Macro ao receber novos dados externos (conexão com GoogleForms)

Mensagem por Reinaldo »

Pelo descrito, se entendi corretamente, uma possibilidade:
Em uma célula fora da sua range de dados (por exemplo AA1) insira o valor da ultima linha de dados (por exemplo 28)

Código: Selecionar todos

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, 27).Value < ActiveSheet.Cells(Cells.Rows.Count, "B").End(xlUp).Row Then 'verifica se houve acrescimo de linha
    Call MacroCalculo 'se houve acrescimo executa a macro
    Cells(1, 27).Value = ActiveSheet.Cells(Cells.Rows.Count, "B").End(xlUp).Row 'altera celula "guia" incluindo nova linha
End If
End Sub


Responder