OVERPASS QUERY IN VBA NON FUNZIONA

Private Sub ScaricaCSVStradeNapoli()

    Dim http As Object
    Dim url As String
    Dim query As String
    Dim risposta As String
    Dim percorsoFile As String


    'url = "https://overpass-api.de/api/interpreter"
    url = "https://overpass-api.de/api/interpreter?data="

    query = _
        "[out:csv(""name"")][timeout:2500];" & vbCrLf & _
        "{{geocodeArea:Napoli}}->.searchArea;" & vbCrLf & _
        "way" & vbCrLf & _
        "  [""highway""~""residential|unclassified|tertiary|secondary|primary""]" & vbCrLf & _
        "  [""name""]" & vbCrLf & _
        "  (area.searchArea);" & vbCrLf & _
        "out;"

    Set http = CreateObject("WinHttp.WinHttpRequest.5.1")

    http.Open "POST", url, False
    http.SetRequestHeader "Content-Type", "text/plain"
    http.Send query

    If http.Status = 200 Then
        risposta = http.ResponseText

        percorsoFile = "C:\TABULATI\strade_napoli.csv"
        Call SalvaTestoSuFile(percorsoFile, risposta)

        MsgBox "CSV salvato in: " & percorsoFile
    Else
        MsgBox "Errore HTTP: " & http.Status & " - " & http.StatusText
    End If

    Set http = Nothing
    
End Sub
Private Sub SalvaTestoSuFile(ByVal filePath As String, ByVal textData As String)

    Dim F As Integer
    F = FreeFile
    Open filePath For Output As #F
    Print #F, textData
    Close #F
    
End Sub

Private Sub ScaricaCSVStradeNapoli()

Dim http As Object
Dim url As String
Dim query As String
Dim risposta As String
Dim percorsoFile As String

url = "https://overpass-api.de/api/interpreter"

' Overpass QL puro: sostituzione di {{geocodeArea}} con la ricerca dell'area
query = "data=" & _
    "[out:csv(""name"")][timeout:2500];" & vbCrLf & _
    "area[""name""=""Napoli""][""admin_level""=""8""]->.searchArea;" & vbCrLf & _
    "way" & vbCrLf & _
    "  [""highway""~""residential|unclassified|tertiary|secondary|primary""]" & vbCrLf & _
    "  [""name""]" & vbCrLf & _
    "  (area.searchArea);" & vbCrLf & _
    "out;"

Set http = CreateObject("WinHttp.WinHttpRequest.5.1")

http.Open "POST", url, False
http.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.Send query

If http.Status = 200 Then
    risposta = http.ResponseText

    percorsoFile = "C:\TABULATI\strade_napoli.csv"
    Call SalvaTestoSuFile(percorsoFile, risposta)

    MsgBox "CSV salvato in: " & percorsoFile
Else
    MsgBox "Errore HTTP: " & http.Status & " - " & http.StatusText & vbCrLf & http.ResponseText
End If

Set http = Nothing

End Sub

Private Sub SalvaTestoSuFile(ByVal filePath As String, ByVal textData As String)

Dim fileHandle As Integer
fileHandle = FreeFile
Open filePath For Output As #fileHandle
Print #fileHandle, textData
Close #fileHandle

End Sub

Grazie provo e ti faccio sapere

E poi perche, questa query, non mi restituisce anche il codice ISTAT, codice:

[out:csv(
::id,
::lat,
::lon,
“addr:street”,
“addr:housenumber”,
“addr:postcode”,
“ref:ISTAT”,
“ref:inset”;
true;
“;”
)][timeout:300];

// Definisci la zona di ricerca (sostituisci il nome della città o provincia)
area[“boundary”=“administrative”][“name”=“Napoli”]->.searchArea;

// Cerca tutti i nodi con numero civico all’interno dell’area
(
node"addr:housenumber";
way"addr:housenumber";
);

// Restituisce i dati
out center;

GRAZIE