Afstand tussen plaatsen berekenen (Excel)

Status
Niet open voor verdere reacties.

Willem99

Gebruiker
Lid geworden
8 feb 2012
Berichten
55
Hallo,

ik heb een probleem met een macro in mijn excelbestand.
Met deze macro wordt de afstand tussen 2 postcodes berekend (zie het bestand in de bijlage in tabel "code").
Dit gebeurt met behulp van een link naar de ANWB routeplanner (zie macro).

Nu is het echter zo dat ik niet altijd postcodegegevens heb bij de werken waarbij ik de macro wil gaan gebruiken.
Wel heb ik plaatsnamen die per opdracht veranderen.
De bedoeling is dus dat de kortste afstand tussen locatie en fabriek weergegeven wordt.

Kan iemand me helpen met het wijzigen van de macro zodat ik het gewenste resultaat krijg? (zie bijlage tabel "gewenst")


Ik hoop dat iemand mij hier mee kan helpen.

Alvast bedankt voor het meedenken.
 

Bijlagen

Een kwestie van de "code" invullen bij city1= ??

zodat je URL er zo uit ziet:
Code:
http://route.anwb.nl/routeplanner/servlet/rp?action=0&zip1=&city1=AADORP&street1=&zip2=&city2=Amsterdam&street2=&iad=homepage.navigatie.middenkolom.routeplannerplanroute
het werkt iig wel met de website alleen niet met jou code op de een of andere manier :/
 
de bedoeling is juist dat ik vanuit excel een locatie kan invoeren en dat de km-ers naar de fabriek dan uitgerekend worden.
Hetzelfde als er bij die postcodes gebeurd maar dan met plaatsnamen..
 
ook op de postcode doet hij het om de een of andere reden niet bij mij...

Probeer het eens aan te passen voor de plaats en zie of het voor jou wel werkt....
Anders kan het altijd nog met GoogleMaps
 
Code:
Public Function GoogleMapsXMLDistance(rngOrigin As Range, rngDestination As Range) As Double
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" & rngOrigin.Value & "&destination=" & rngDestination.Value & "&alternatives=false&units=metric&sensor=false", False
        .send
        GoogleMapsXMLDistance = CDbl(.responseXML.SelectSingleNode("//leg/distance/value").Text) / 1000 'am_2012
    End With
End Function
Bron: http://www.helpmij.nl/forum/showthr...rekenen-tussen-twee-postcodes-via-google-maps

Zie ook http://www.helpmij.nl/forum/showthread.php/722743-Postcode-afstand-zoeken-mbt-google-maps of zoek op dit forum of op worksheet.nl of op internet op "google maps excel"
 
De macro is prima zo, alleen nu wil ik de commandbutton verplaatsen naar een ander tabblad.
Zodat ik vanuit een ander tabblad mijn formulier kan gaan opbouwen.

Als ik hem knip en plak naar een ander tabblad dan doet de macro het niet meer.
Dus waarschijnlijk moet ik in de macro aangeven dat de commandbutton in een ander tabblad komt.
Ik weet alleen niet hoe..

Kan iemand me hier nog mee helpen?
 
met de
Code:
With Worksheets(1)
Geef je aan dat je in Worksheet # 1 werkt, misschien zou beter zijn
Code:
With Worksheets("Blad1")
Maar dat is semantiek, het probleem zit hem (waarschijnlijk) simpelweg in het feit dat de code PRIVATE is EN in Blad1 staat, die kan je dus niet vanaf blad2 aanroepen.
Bovendien heeft elke knop standaard een "Commandbutton_click" sub in het blad zelf, die pas wordt aangemaakt als je naar de code gaat en niet eerder.
Als je je code verplaats naar een PUBLIC SUB in Module1, dan kan je die macro toewijzen aan je knop en zou het verplaatsen van de knop wel werken.

FYI:
Zonder een licentie te kopen bij google ben je gelimiteerd op 2500 verzoeken per dag en je hebt het ROUTE OPSLAAN gedeelte uitgezet....
Per route is het 2 verzoeken en als je een beetje aan het grutten / testen bent met wat records dan loop je snel door je ruimte heen... pas daar dus mee op, of zet je opslaan terug aan.

Intressant trouwens die formule voor "GREAT CIRCLE DISTANCE" hoe kom je daar aan?
Is dat er een voor de A kwadraat + B kwadraat = C kwadraat "rechtelijn" afstand berekening?
 
Laatst bewerkt:
Ik heb wat zitten puzzelen.
Door je hulp heb ik de macro al wel wat tabbladen naar achter kunnen schuiven, zodat hij wat meer op de achtergrond staat.
Bekijk bijlage test.xls

Vervolgens heb ik mijn macro in module 3 gezet en heb ik er een knop aangehangen in die in blad1"
Bekijk bijlage testfout.xls

Toch geeft hij een foutmelding...
Foutmelding 1004 .Range("A1").Select


En hoe zet ik mijn ROUTE OPSLAAN terug aan? Ik dacht dat die aan stond..


Die formule voor "GREAT CIRCLE DISTANCE" komt van Alphamax (zie hierboven)
 
Laatst bewerkt:
Die foutmelding is op zich logisch, je kan alleen maar iets selecteren op iets dat actief is....

Aangezien je het blad "KM" op de achtergrond hebt (en laat) kan je daar niets selecteren...
Dus OF simpel die regel weg flikkeren, of eerst je sheet KM selecteren met:
Code:
.activate
en dat met
Code:
sheets("Blad1").activate
Weer terug naar je Blad1 waar je knop staat.

Als je niet wil dat mensen "met hun fikken" aan het KM sheet zitten, kan je die ook eventueel onzichtbaar maken. Dan weten de meeste mensen hem niet te vinden.
 
@willem99

je kan of
1. de regel verwijderen
of
2. vervangen door Worksheets("Blad1").Range("A1").Select

de code zorgt ervoor dat bij een hele lange lijst naar de cel linksboven gesprongen wordt
 
Ik heb de regel gewoon verwijderd.
Erg bedankt! Nu kan ik weer vooruit.
 
Namliam, even terugkomend op het verhaal over dat route opslaan...
Hoe zet ik mijn ROUTE OPSLAAN terug aan? Zodat ik niet zo snel aan die gelimiteerde 2500 verzoeken per dag kom..
 
' Open "test.txt" For Output As #1: Print #1, .responsetext: Close #1

De appostrofe die in deze regel zorgt er voor dat er hoe dan ook niks wordt opgeslagen....
Wel natuurlijk binnen je excel sheet, en zolang daar niks veranderd schieten als het goed is er ook geen vragen naar Google....
Je zou idealiter een file "ergens" willen opslaan met een "van-naar.xml" soort van filenaam zodat je in die folder ook weer kan zoeken of je de route al hebt alvorens je naar google gaat.
 
Dan wordt het mij te complex..
Dan ga ik toch verder met de huidige opzet.
Toch bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan