
Chamar uma API externa para consultar os CEPs de uma cidade usando VBA pode ser realizado através de APIs públicas disponíveis. Uma das APIs que você pode usar para este propósito é a ViaCEP, que permite consultar informações de CEPs no Brasil.
Function ConsultarCEPsPorCidade(CEP As String) As String
Dim httpObject As Object
Set httpObject = CreateObject("MSXML2.XMLHTTP")
Dim url As String
url = "https://viacep.com.br/ws/" & CEP & "/json/"
httpObject.Open "GET", url, False
httpObject.Send
If httpObject.Status = 200 Then
ConsultarCEPsPorCidade = httpObject.responseText
Else
ConsultarCEPsPorCidade = "Erro na solicitação: " & httpObject.Status
End If
Set httpObject = Nothing
End Function
Sub ProcessarRespostaJSON()
Dim CEP As String
Dim resposta As String
Dim linhas() As String
Dim partes() As String
Dim linha As String
Dim i As Integer
CEP = ThisWorkbook.Sheets(1).Range("A1").Value
resposta = ConsultarCEPsPorCidade(CEP)
' Quebrar a resposta em linhas (cada CEP)
linhas = Split(resposta, "},{")
' Processar cada linha
For i = LBound(linhas) To UBound(linhas)
linha = linhas(i)
linha = Replace(linha, "{", "")
linha = Replace(linha, "}", "")
linha = Replace(linha, """", "")
linha = Replace(linha, "[", "")
linha = Replace(linha, "]", "")
partes = Split(linha, ",")
' Atribuir os valores nas células
ThisWorkbook.Sheets(1).Cells(1 + 3, 1).Value = ExtrairValorJSON(partes, "cep")
ThisWorkbook.Sheets(1).Cells(2 + 3, 1).Value = ExtrairValorJSON(partes, "logradouro")
ThisWorkbook.Sheets(1).Cells(3 + 3, 1).Value = ExtrairValorJSON(partes, "complemento")
ThisWorkbook.Sheets(1).Cells(4 + 3, 1).Value = ExtrairValorJSON(partes, "bairro")
ThisWorkbook.Sheets(1).Cells(5 + 3, 1).Value = ExtrairValorJSON(partes, "localidade")
ThisWorkbook.Sheets(1).Cells(6 + 3, 1).Value = ExtrairValorJSON(partes, "uf")
ThisWorkbook.Sheets(1).Cells(7 + 3, 1).Value = ExtrairValorJSON(partes, "ibge")
ThisWorkbook.Sheets(1).Cells(8 + 3, 1).Value = ExtrairValorJSON(partes, "gia")
ThisWorkbook.Sheets(1).Cells(9 + 3, 1).Value = ExtrairValorJSON(partes, "ddd")
ThisWorkbook.Sheets(1).Cells(10 + 3, 1).Value = ExtrairValorJSON(partes, "saifi")
Next i
End Sub
Function ExtrairValorJSON(partes() As String, chave As String) As String
Dim parte As Variant
For Each parte In partes
If InStr(parte, chave) > 0 Then
ExtrairValorJSON = Trim(Split(parte, ":")(1))
Exit Function
End If
Next parte
ExtrairValorJSON = ""
End Function
Cole o código no módulo que você criou no Editor do VBA.
Insira o nome da cidade na célula A1 e a sigla do estado na célula A2.
Execute a sub-rotina ConsultarCEPs.
Este exemplo faz uma solicitação GET para a API ViaCEP e retorna os dados em formato JSON, que será exibido na célula A3. Dependendo do volume de dados, você pode precisar de um processamento adicional para extrair e formatar as informações de maneira adequada para a sua necessidade. Caso queira receber esse arquivo Excel, contendo essa função, é só enviar um e-mail
solicitando para o endereço
marmitanao@gmail.com