✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.
Neste artigo, criaremos uma função do Excel para calcular a distância entre dois endereços usando a API de rotas do Google Maps. Isso permitirá que você obtenha o tempo de viagem entre os dois locais.
O formato da função será o seguinte: =TRAVELTIME(origin, destination, api_key), =TRAVELDISTANCE(origin, destination, apikey).
A origem e o destino serão strings e podem ser um endereço exato ou o nome de um local.
Para usar a função, é necessária uma chave de API. A página "Primeiros passos" pode ajudá-lo com isso: https://bit.ly/GoogleMapsGettingStarted. Crie um novo projeto e verifique se a API Directions foi adicionada.
No final deste arquivo baixe a planilha com os códigos já implementados nela. Pronta para você testar as funções VBA com suas cidades de referência.
Passo 1: Crie um novo arquivo de macro e adicione VBA-JSON
Como a API de rotas do Google Maps é uma API JSON, usaremos VBA-JSON para facilitar o uso dos resultados da solicitação da web. Você pode baixar a versão mais recente aqui: https://github.com/VBA-tools/VBA-JSON/releases . Baixe e extraia o arquivo zip. Em seguida, abra seu arquivo de macro. Abra o Editor do Visual Basic (Alt + F11).
Abra o editor do Visual Basic. Se você não tiver esse botão, certifique-se de que a guia “Desenvolvedor” esteja habilitada. Clique com o botão direito do mouse na faixa de opções, vá para “Personalizar a faixa de opções…” e marque Desenvolvedor nas guias principais.
Para importar o arquivo VBA-JSON, vá em Arquivo > Importar arquivo… (Ctrl + M). Selecione JsonConverter.bas. Um módulo JsonConverter aparecerá na barra lateral.
Em seguida, verifique se as referências apropriadas estão habilitadas. Vá em Ferramentas > Referências… Além das referências já selecionadas, marque “Microsoft Scripting Runtime” (para suporte de dicionário necessário para VBA-JSON) e “Microsoft WinHTTP Services, versão 5.1” (para fazer a solicitação HTTP para a API) . Se precisar de suporte para Excel para Mac, precisará instalar o VBA-Dictionary do autor do VBA-JSON. Mais detalhes podem ser encontrados na parte inferior da página inicial do projeto: https://github.com/VBA-tools/VBA-JSON.
Etapa 2: criar as funções
Com as referências configuradas, podemos agora escrever o código da função. O código é relativamente simples. Ele simplesmente pega os três parâmetros e os formata em uma solicitação da web. A resposta da solicitação da web é então analisada por VBA-JSON e a variável relevante retornada. Observe que a solicitação pode retornar várias rotas, mas a função simplesmente retorna a hora da primeira rota. O modo padrão é dirigir, mas consulte a documentação da Directions API para obter informações sobre outros modos e ajuste a variável strURL de acordo.
Para inserir o código, crie um novo módulo com Inserir > Módulo. Em seguida cole o seguinte código:
Function TEMPODEVIAGEM(origin, destination, apikey)
' Retorna o número de segundos que levaria para chegar de um lugar ao outro.
Salve o arquivo. Agora você deve ser capaz de usar as funções de dentro do Excel. Coloque sua chave de API na célula A1 e tente o seguinte: =TEMPODEVIAGEM("Avenida Ana Costa 500", "Santos, SP", A1). Isso retorna um tempo de viagem de cerca de 435 segundos. Se você quiser que isso seja exibido em minutos e segundos, tente esta função: =ARREDMULTB.MAT(A8/60)&" minutes "&MOD(A8, 60)&" seconds"onde A8 é a célula com o tempo de viagem em segundos. Isso imprime um útil “7 minutos e 15 segundos” para o exemplo de 24 Sussex. Também podemos encontrar a distância. Tente o seguinte: =DISTANCIADAVIAGEM("Avenida Carangola", "Uberaba, MG", A1). Ele retorna uma distância de 2667 metros. Converta para quilômetros com isto: =ARREDONDAR.PARA.CIMA(A9/1000; 1)&" km".
Observação: a API de rotas do Google Maps sempre retorna as distâncias em metros. Converta para KM ou Milhas como desejar. Isso pode ser feito no Excel ou modificando as funções no VBA.
É isso! Agora você deve ter uma função de tempo de viagem funcionando. Tudo o que você precisa agora é uma lista de endereços para usá-lo. Se você quiser obter uma lista da Web ou de um arquivo JSON local, consulte Importar dados JSON no Excel 2016 ou 2019 ou Office 365 usando uma consulta Get & Transform.
Gostaria de extrair dados do GoogleMaps? Digamos, CEP, de uma entrada da empresa em uma célula do Excel, através do VBA.
Apesar da idade do BigData, não é provável que o MS Excel desapareça de nosso escritório e computadores particulares. Oferece inúmeras possibilidades para armazenar menores quantidades de dados, prepará-los com clareza e realizar vários cálculos. É por isso que também é interessante acessar várias fontes de dados diretamente do MS Excel. Para consultas automatizadas, o Google (e muitos outros provedores de dados) fornecem uma chamada API da web, ou seja, interface de programação, que também pode ser consultada no Excel usando VBA.
Suponha que no último ano você dirigiu muito visitando clientes de negócios, mas não anotou os dados do hodômetro todas as vezes. Agora você tem uma longa lista de lugares onde esteve e precisa da distância automática entre eles.
Bem, você pode consultar manualmente cada rota no Google Maps e, em seguida, copiá-la para uma planilha no Excel. No entanto, presumimos que tenha passado por tantas rotas no ano passado que o trabalho seja tedioso demais.
Seria muito mais fácil se simplesmente usasse uma fórmula do Excel que consultasse e inserisse automaticamente suas rotas. Felizmente, é possível!
Você só precisa definir uma função VBA que faça exatamente isso. E que tipo de postagem seria essa se você tivesse que escrever isso agora...
Para que este código funcione, você precisa substituir YOUR_KEY por uma chave válida para a API do Google. Para obter uma chave precisa abrir uma conta na plataforma Google Maps. Se o número de consultas não ultrapassar uma determinada cota mensal, será gratuito. A cota exata muda às vezes, mas atualmente pode ser lida neste link.
Outra aplicação seria, por exemplo, se você precisasse das coordenadas geográficas para uma série de endereços. Também existe uma API para isso.
Se estiver prestes a deixar o mundo do Excel para recorrer a ferramentas Data Science como R. No R, essas solicitações de API são geralmente mais fáceis porque a função associada geralmente já existe e você não precisa remendá-la sozinho.
1ª OPÇÃO
Public Function GetDistance (start As String, dest As String)
Dim firstVal As String, secondVal As String, lastVal As String
Let firstVal = "https://www.google.com/maps/dir/Santos,+State+of+S%C3%A3o+Paulo/Tamareiras+Park+Hotel,+R.+Oleg%C3%A1rio+Maciel,+187+-+Centro,+Uberaba+-+MG,+38010-230/R.+S%C3%A3o+Pedro,+70+-+Leblon,+Uberaba+-+MG,+38030-410/@-21.8404124,-49.3805777,7z/data=!3m1!4b1!4m19!4m18!1m5!1m1!1s0x94ce03b97cc7856f:0x3ff3e507b04bbc46!2m2!1d-46.3317787!2d-23.9592201!1m5!1m1!1s0x94bad0369791b18f:0xd52040549cdf031e!2m2!1d-47.9378879!2d-19.7522392!1m5!1m1!1s0x94bad016de4bf999:0xaf75591c4238e716!2m2!1d-47.9343983!2d-19.7688608"