ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: bailanhong

[求助] 蓝天老师帮忙!请问,不显示的网页数据可以提取码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-4-17 21:25 | 显示全部楼层
bailanhong 发表于 2013-4-16 08:36
一直在等!!

很简单的事情,加个循环就可以了:

Private Sub CommandButton1_Click()    'nature_museum查询
    On Error Resume Next
    With CreateObject("internetexplorer.application")
        .Visible = False
        .Navigate "http://www.nature-museum.net/Spdb/spsearch.aspx"
        While .ReadyState <> 4 Or .busy
            DoEvents
        Wend
        For p = 1 To Range("a65536").End(xlUp).Row
            n = Range("b65536").End(xlUp).Row
            .document.getElementById("txtSearchName").Value = Cells(p, 1)
            .document.getElementById("QueryCmd").Click
            Set r = .document.getElementById("QueryResult").All.tags("table")
            t1 = Timer
            ss = ""
            Do Until Timer > t1 + 1000
                ss = r(0).Rows(0).Cells(1).innerText
                If ss <> "" Then GoTo 1
                DoEvents
                ss = ""
            Loop
1:
            For i = 0 To r.Length - 1
                Set r1 = r(i).Rows
                temp = Split(r1(0).Cells(1).innerText, vbCrLf)
                Range(Cells(i + 1 + n, 2), Cells(i + 1 + n, 1 + UBound(temp))) = temp
                If Left(Cells(i + 1 + n, "D"), 2) = "别名" Then
                    Range("D" & i + 1 + n).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
                End If
            Next i
            n = Range("b65536").End(xlUp).Row
            Range("B" & n & ":H" & n).Borders(xlEdgeBottom).LineStyle = xlContinuous
            Set r = Nothing
        Next p
        .Quit
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2013-4-17 21:26 | 显示全部楼层
bailanhong 发表于 2013-4-16 18:42
请教!!!!



    附件:


nature_museum查询.rar

16.07 KB, 下载次数: 13

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-20 11:44 | 显示全部楼层
本帖最后由 bailanhong 于 2013-4-20 12:34 编辑
html2013 发表于 2013-4-17 21:34
好像有点问题:比如说查询“黄精”。
所以要修改一下:


高手,您好,加了循环还是只能查询一个是怎么回事呀?

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-21 09:07 | 显示全部楼层
html2013 发表于 2013-4-17 21:34
好像有点问题:比如说查询“黄精”。
所以要修改一下:

高手你好!发现问题了,原因是当查询的A列列表中某一个名称没有的时候,网页弹出对话框“没有找到物种记录”,VBA也就停止了,请问要怎么解决呢?

TA的精华主题

TA的得分主题

发表于 2013-6-16 12:28 | 显示全部楼层
本帖最后由 html2013 于 2013-6-16 18:13 编辑

                     
  1. Sub Test()
  2.     On Error Resume Next
  3.     sr = encodeURI("黄精")
  4.     With CreateObject("microsoft.xmlhttp")
  5.         .Open "GET", "http://www.nature-museum.net/Ajaxserver/server.ashx?service=spdict&method=querybynameauto&format=json&lname=&aname=" & sr, False
  6.         .setRequestHeader "x-requested-with", "XMLHttpRequest"
  7.         .setRequestHeader "Connection", "Keep-Alive"
  8.         .send
  9.         str1 = "a=" & .responsetext
  10.         With CreateObject("MSScriptControl.ScriptControl")
  11.             .Language = "JScript"
  12.             .AddCode str1
  13.             n = .Eval("a.length")
  14.             For p = 0 To n - 1
  15.                 Cells(p + 1, 1) = .Eval("a[" & p & "].Name_Zh")
  16.                 Cells(p + 1, 2) = .Eval("a[" & p & "].Name_Latin")
  17.                 Cells(p + 1, 3) = .Eval("a[" & p & "].SAuthor")
  18.                 Cells(p + 1, 4) = .Eval("a[" & p & "].FamilyGenus.FamilyName_Zh")
  19.                 Cells(p + 1, 5) = .Eval("a[" & p & "].FamilyGenus.FamilyName_Latin")
  20.                 Cells(p + 1, 6) = .Eval("a[" & p & "].FamilyGenus.GenusName_Zh")
  21.                 m = .Eval("a[" & p & "].NormalNamesList.length")
  22.                 For j = 0 To m - 1
  23.                     Cells(p + 1, j + 7) = .Eval("a[" & p & "].NormalNamesList[" & j & "].Name")
  24.                 Next j
  25.             Next p
  26.         End With
  27.     End With
  28. End Sub

  29. Function encodeURI(becoded As String) As String    'url编码
  30.     Set JS = CreateObject("msscriptcontrol.scriptcontrol")
  31.     JS.Language = "JavaScript"
  32.     encodeURI = JS.Eval("encodeURIComponent('" & becoded & "');")
  33. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-16 23:05 | 显示全部楼层
html2013 发表于 2013-6-16 12:28

请问如何对A 列批量化?

TA的精华主题

TA的得分主题

发表于 2013-6-17 01:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
html2013 发表于 2013-6-16 12:28

楼主果然高人,代码可以执行了,但通过网页查询到的黄精有100条,而你的代码运行只能找到10几条,不知问题在那?

TA的精华主题

TA的得分主题

发表于 2013-6-17 13:38 | 显示全部楼层
wwwconsumer 发表于 2013-6-17 01:02
楼主果然高人,代码可以执行了,但通过网页查询到的黄精有100条,而你的代码运行只能找到10几条,不知问题 ...

呵呵,你指的是“模糊查询”吧?
看看下面的:

物种搜索.rar

22.44 KB, 下载次数: 12

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-6-17 17:53 | 显示全部楼层
果然是高手,模糊查询和精确查询都有,十分方便。

TA的精华主题

TA的得分主题

发表于 2014-11-26 11:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-10 04:36 , Processed in 0.025809 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表