Ir para conteúdo

A partir do dia 19/11/2018, o foco do Fórum do BABOO é apenas Windows e Segurança Digital conforme informado no início de 2018.
As áreas que não têm relação com esses dois assuntos foram arquivadas e seus tópicos estão disponíveis para consulta na área Tópicos Antigos.

avatarmago

Cálculo de Pedágio em Macro

Mensagem Recomendada

Em 24/11/2016 at 5:29 PM, osvaldomp disse:

Coloque os nomes das cidades/estados de origem na coluna 'A' e de destino na 'B'. Exemplos abaixo.

O código coloca o valor total dos pedágios na coluna E.

 

col A......................................................col B...........................................................................o código colocará este resultado na col E

.......origem..........................................destino            
são paulo sp..............................campinas sp.........................................................................R$ 17,50
campo mourão pr...................londrina pr............................................................................R$ 26,20
pintópolis mg...........................belo horizonte mg.............................................................R$ 4,80
campinas sp..............................londrina pr............................................................................R$ 101,50

Altere a linha do código, deixe conforme abaixo, para exibir a página do site durante a execução. Ajuste o tamanho e a posição das janelas do Excel e do site de forma que você consiga visualizar ambas e assim acompanhar as ações do código.

IE.Visible = True

 

 

 

Boa tarde! Não estou conseguindo fazer os calculos, a macro roda mais não traz o resultado. Consegue me ajudar, estamos precisando muito...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, eu achei esse macro na internet e notei que utiliza a api do google maps.

'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String)
    Dim firstVal As String, secondVal As String, lastVal As String
    firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
    secondVal = "&destinations="
    lastVal = "&mode=car&language=pt-BR&sensor=false"
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    Url = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
    objHTTP.Open "GET", Url, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
    Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
    Set matches = regex.Execute(objHTTP.responseText)
    tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
    GetDistance = CDbl(tmpVal)
    Exit Function
ErrorHandl:
    GetDistance = -1
End Function

 Sera que não tem como adaptar este macro para utilizar uma outra API de terceiros, como a API da Here maps: Link, Api de pedágio da map control: Link (Bem limitada), etc. E usar como uma função "=pedágio(orig;dest;tipo;eixos)" "=R$ x,xx"?
Criei uma conta grátis da here, qualquer coisa posso ajudar com as id's.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Busquei nos exemplos um modelo e via inspetor de elementos consegui isso: 

https://tce.cit.api.here.com/2/calculateroute.json?jsonAttributes=41&waypoint0=-23.56287,-46.65469&detail=1&waypoint1=-22.91216,-43.17501&routelegattributes=li&routeattributes=gr&maneuverattributes=none&linkattributes=none,rt,fl&legattributes=none,li,sm&currency=BRL&departure=&tollVehicleType=2&trailerType=0&trailersCount=0&vehicleNumberAxles=2&trailerNumberAxles=0&hybrid=0&emissionType=5&height=1.67m&trailerHeight=0&vehicleWeight=1739&limitedWeight=1.739t&disabledEquipped=0&minimalPollution=0&hov=0&passengersCount=2&tiresCount=4&commercial=0&heightAbove1stAxle=1m&width=1.8&length=4.41&mode=fastest;car;traffic:enabled&rollup=none,country;tollsys&alternatives=1&app_id=inCUge3uprAQEtRaruyaZ8&app_code=9Vyk_MElhgPCytA7z3iuPA&jsoncallback=parseRoutingResponse

Mas quando colo no navegador ele obtém essa resposta:

"parseRoutingResponse(Unauthorized. The request is not from an authorized source.)"

Nas fotos esta a descrição dos parâmetros utilizados e os resultados que deveria gerar

parametros.jpg

resultados_parametros.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 24/11/2016 at 5:29 PM, osvaldomp disse:

Coloque os nomes das cidades/estados de origem na coluna 'A' e de destino na 'B'. Exemplos abaixo.

O código coloca o valor total dos pedágios na coluna E.

 

col A......................................................col B...........................................................................o código colocará este resultado na col E

.......origem..........................................destino            
são paulo sp..............................campinas sp.........................................................................R$ 17,50
campo mourão pr...................londrina pr............................................................................R$ 26,20
pintópolis mg...........................belo horizonte mg.............................................................R$ 4,80
campinas sp..............................londrina pr............................................................................R$ 101,50

Altere a linha do código, deixe conforme abaixo, para exibir a página do site durante a execução. Ajuste o tamanho e a posição das janelas do Excel e do site de forma que você consiga visualizar ambas e assim acompanhar as ações do código.

IE.Visible = True

 

 

 

Olá Osvaldo, é possível inserir dentro dessa macro também o valor das distâncias que aparece no site quando consultamos? Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acrescente a segunda linha ao código, conforme abaixo.

      Cells(Contador, 5) = IE.Document.getElementById("toll-value").innerText
      Cells(Contador, 6) = IE.Document.getElementById("dist-value").innerText
<~~~acrescente esta linha

 

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 16/03/2017 at 10:13 PM, GAP disse:

Boa noite. Para mim constou erro na seguinte linha:

IE.Document.All("origin").innerText = CidadeOrig

Podem me ajudar?

Habilitou isso que o oswaldo disse???

5. no menu clique em Ferramentas / Referências / marque as duas referências abaixo

    Microsoft HTML Object Library
    Microsoft Internet Controls

 

Obs.: Fiz uma pequena inclusão que na coluna C e D preenche com o tempo estimado e a distancia entre as cidades.

     'Coloca na coluna 'C' o valor de tempo aproximado
      Cells(Contador, 3) = IE.Document.getElementById("time-value").innerText
     'Coloca na coluna 'D' o valor da distancia entre as cidades
      Cells(Contador, 4) = IE.Document.getElementById("dist-value").innerText
     'Coloca na coluna 'E' o valor total calculado do pedágio
      Cells(Contador, 5) = IE.Document.getElementById("toll-value").innerText

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 16/09/2018 at 11:54 PM, osvaldomp disse:

Acrescente a segunda linha ao código, conforme abaixo.

      Cells(Contador, 5) = IE.Document.getElementById("toll-value").innerText
      Cells(Contador, 6) = IE.Document.getElementById("dist-value").innerText
<~~~acrescente esta linha

 

 

Olá Oswaldo, obrigado pelo retorno. Porém, minha macro está dando erro, mesmo habilitando as referências.

Como não sei de onde vem, inseri o arquivo para que você possa avaliar melhor.

Teste Pedágio.xlsm

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. a operação de copiar o código aqui do fórum e colar no editor de VBA carrega "sujeiras". É preciso limpá-las, assim: no editor de VBA clique sobre qualquer parte do código e aperte F8 / será exibida uma mensagem de erro e a "sujeira" será pintada de azul / aperte Enter / aperte Delete ~~~> repita até limpar todo o código, depois rode o código via botão da planilha

2. como já foi comentado antes neste tópico, é necessário colocar cidade estado de origem e cidade estado de destino, e nos seus exemplos você não colocou o estado.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, osvaldomp disse:

1. a operação de copiar o código aqui do fórum e colar no editor de VBA carrega "sujeiras". É preciso limpá-las, assim: no editor de VBA clique sobre qualquer parte do código e aperte F8 / será exibida uma mensagem de erro e a "sujeira" será pintada de azul / aperte Enter / aperte Delete ~~~> repita até limpar todo o código, depois rode o código via botão da planilha

2. como já foi comentado antes neste tópico, é necessário colocar cidade estado de origem e cidade estado de destino, e nos seus exemplos você não colocou o estado.

Muito obrigado, Oswaldo!!! Para eu começar a usar o Chrome eu devo substituir "InternetExplorer" por qual termo? Dei uma olhada no Fórum Microsoft e há menção de que "não é possível controlar o Chrome por VBA" além de, pelo que vi, ter que ajustar todo o código atual.

Teste Pedágio.xlsm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não consigo te ajudar pois não tenho familiaridade com o Chrome.

O sábio Google poderá te ajudar. Ou pergunte lá no Posto Ipiranga  :correndo:       😉

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×