Bom Dia, Turma!
É sempre bom viajar e arejar as idéias após longos meses de estudos, trabalhos e o estresse acumulado devido à rotira que vivemos.
Programar uma viagem exige uma série de cuidados, como organizar um roteiro, verificar locais para descanso, dimensionar a bagagem, verificar a manutenção do carro e, é claro, conhecer as rotas e as distâncias entre as cidades. Sei que hoje a tecnologia proporciona uma série de facilidades neste último quesito, tais como o GPS e o famoso WAZE, que indica até se na pista há buracos ou se existe um guarda do CET multando!!hehehe
Este artigo têm como intuito incorporar ao Excel a função:
=Km_Distancia(Local de Origem; Local de Destino)
Esta função é criada com programação VBA, sendo assim, devemos seguir os seguintes passos:
1º Verificar se a guia Desenvolvedor está habilitada, caso não esteja, siga o seguinte caminho:
Arquivo => Opções => Personalizar Faixa de Opções => Selecionar Desenvolvedor na lista a direita
2º Entrar no Visual Basic na guia Desenvolvedor:
Resolva exercícios e atividades acadêmicas
3º Criar um Módulo para inclusão do código:
Inserir => Selecionar Módulo
Encontre o professor particular perfeito
4º Incluir o Seguinte Código no Módulo:
Function Km_Distancia(Origin As String, Destination As String) As Double
'Requer referência ao: 'Microsoft XML, v6.0'
Dim Solicitacao As XMLHTTP60
Dim Doc As DOMDocument60
Dim Distancia_Pontos As IXMLDOMNode
Let Km_Distancia = 0
'Checa e limpa as entradas
On Error GoTo Sair
Let Origin = Replace(Origin, " ", "%20")
Let Destination = Replace(Destination, " ", "%20")
' Le os dados XML da API do Google Maps.
Set Solicitacao = New XMLHTTP60
Solicitacao.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" _
& Origin & "&destination=" & Destination & "&sensor=false", False
Solicitacao.send
' Tornando o XML legível por usar o XPath
Set Doc = New DOMDocument60
Doc.LoadXML Solicitacao.responseText
' Obtendo o valor da distância entre os nós.
Set Distancia_Pontos = Doc.SelectSingleNode("//leg/distance/value")
If Not Distancia_Pontos Is Nothing Then Km_Distancia = Distancia_Pontos.Text / 1000
Sair:
' Tidy up
Set Distancia_Pontos = Nothing
Set Doc = Nothing
Set Solicitacao = Nothing
End Function
5º Habilitar a Biblioteca:
Ferramentas => Referências => Selecionar 'Microsoft XML, v6.0'
Exemplo da Função Km_Distancia:
- | A | B |
1 | DISTÂNCIA ENTRE LOCAIS | |
2 | ORIGEM: | Sao Paulo |
3 | DESTINO: | Diamantina |
4 | DISTÂNCIA: | =CONCATENAR(INT(Km_Distancia(B2;B3));" ";"km") |
Obs.: Os nomes das cidades devem ser digitados sem acentos ou caracteres especiais.
- | A | B |
1 | DISTÂNCIA ENTRE LOCAIS | |
2 | ORIGEM: | Sao Paulo |
3 | DESTINO: | Diamantina |
4 | DISTÂNCIA: | 858 km |
Referência:
Consultor e Professor: Ivair Claudio Ferrari.
Um grande abraço a todos, espero que tenham gostado.
Carlos Roberto Roa