Skip to content

saintxu7/VBA-Excel-OneClickSearchingLocationInfo-v.15

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

VBA-Excel-OneClickSearchingLocationInfo-v.15

一键批量查百度地图&Bing地图 Sub baiduMap()

Dim url, html, js
Dim i%, j%

url = ""

Set html = CreateObject("htmlfile")

Set js = CreateObject("scriptcontrol")

js.Language = "jscript"

'----------------选取查询信息所在区域----------- quyu = Application.InputBox("为避免网站查询限制,每次查询尽量不要超过500个,过度频繁查询可能无法返回结果" & Chr(13) & Chr(13) & "请选择要查询的地址信息所在单元格区域", "请选择要查询的地址信息", "", Type:=8).Address

Range(quyu).Select

s = Range(quyu).Cells(1, 1).Row
t = Range(quyu).Rows.Count + s - 1
    
If s = False Then Exit Sub

If t = False Then Exit Sub
If t < s Then MsgBox "结束行号不能小行开始行号!": Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False

'----------------循环查询-----------------

For s = s To t

    With CreateObject("msxml2.xmlhttp")

        url = "https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=baidu&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd="

'-------编码转换-------

        Str1 = Cells(s, 1).Value
        
        With CreateObject("scriptcontrol")
        .Language = "javascript"
        Str2 = .eval("encodeURIComponent('" & Str1 & "');")
        
        End With
                    
        url = url & Str2
        
        url = url & "&c=131&src=0&wd2=&pn=0&sug=0&l=12&b=(12575228.9212,2644035.4608000005;12618301.45,2687971.5992)&from=webmap&biz_forward={%22scaler%22:1,%22styles%22:%22pl%22}&sug_forward=&auth=%3DO3RbGcH7yfV4Jg431bVcM8K7gL%40xzVeuxHBBxBzLEEtBnlQADZZz1GgvPUDZYOYIZuVt1cv3uVtPWv3GuLt8BnlQcWlADZZZZZZZZZzWvPYuxt8zv7u%40ZPuLtjADzfiKKvAuexZFTHrwzzvC00dE7&device_ratio=1&tn=B_NORMAL_MAP&nn=0&u_loc=12596793,2623529&ie=utf-8&t=1533132645275"

        .Open "get", url, False

        .send

        js.addcode ("suwenkai = " & .responsetext)

        slen = js.eval("suwenkai.content.length") - 2


        On Error Resume Next
        
       For i = 0 To slen


            Cells(s, 2) = js.eval("suwenkai.content[" & i & "].name")

            Cells(s, 3) = js.eval("suwenkai.content[" & i & "].addr")

            Cells(s, 4) = js.eval("suwenkai.content[" & i & "].tel")
            
        Next
        

    End With
    
Next

End Sub

Sub BingMap()

Dim url, html, js
Dim i%, j%

url = ""

Set html = CreateObject("htmlfile")

Set js = CreateObject("scriptcontrol")

js.Language = "jscript"

'----------------选取查询信息所在区域----------- quyu = Application.InputBox("为避免网站查询限制,每次查询尽量不要超过500个,过度频繁查询可能无法返回结果" & Chr(13) & Chr(13) & "请选择要查询的地址信息所在单元格区域", "请选择要查询的地址信息", "", Type:=8).Address

Range(quyu).Select

s = Range(quyu).Cells(1, 1).Row
t = Range(quyu).Rows.Count + s - 1
    
If s = False Then Exit Sub

If t = False Then Exit Sub
If t < s Then MsgBox "结束行号不能小行开始行号!": Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False

'----------------循环查询-----------------

For s = s To t

    With CreateObject("msxml2.xmlhttp")

        url = "https://cn.bing.com/maps/overlay?q="

'-------编码转换-------

        Str1 = Cells(s, 1).Value
        
        With CreateObject("scriptcontrol")
        .Language = "javascript"
        Str2 = .eval("encodeURIComponent('" & Str1 & "');")
        
        End With
                    
        url = url & Str2
        
        url = url & "&filters=direction_partner%3A%22maps%22%20tid%3A%22FBEA96CC6B2A40989C2A6CA5C2D47306%22&mapcardtitle=&appid=E18E19EF-764F-41A9-B53E-6E98AE519695&p1=[AplusAnswer]&count=20&ecount=20&first=0&efirst=1&localMapView=30.271807645114265,120.13721036911012,30.26011339339155,120.14394807815553#"
        
        
        
        .Open "get", url, False
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36"
        
        .send
        
        text0 = .responsetext
          
        If InStr(1, text0, "searchSuggestionTitle") = 0 Then
        
        On Error Resume Next
        
                    
        text1 = Split(.responsetext, "class=" & Chr(34) & "b_address" & Chr(34) & ">")(1)
        text2 = Split(text1, "</span></li><li><span class=" & Chr(34) & "cbl b_lower" & Chr(34) & ">Phone:</span>")(0)
        
        text3 = Split(text1, "</span></li><li><span class=" & Chr(34) & "cbl b_lower" & Chr(34) & ">Phone:</span>")(1)
        text4 = Split(text3, "</li><li><span class=" & Chr(34) & "cbl b_lower")(0)
        
        Cells(s, 2) = Cells(s, 1)

        Cells(s, 3) = text2

        Cells(s, 4) = text4
            
        
        
        
        Else

'--------------返回多个搜索结果的时候读取多条记录------------------

       With CreateObject("htmlfile")
       
       .write text0
       
       L = .getElementsByTagName("A").Length
       
       
       
       For i = 0 To L - 1
       
       
       On Error Resume Next
       
       Cells(s, 3 * i + 2).Value = Split(.getElementsByTagName("A")(i).innerText, Chr(13))(0)
       Cells(s, 3 * i + 3).Value = Split(.getElementsByTagName("A")(i).innerText, Chr(13))(1)
       Cells(s, 3 * i + 4).Value = Split(.getElementsByTagName("A")(i).innerText, Chr(13))(2)
       
       Next
       
       
       End With
       
        
        End If

    End With
    
Next

End Sub

About

一键批量查百度地图&Bing地图

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published