ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] (已解决)请教“WEB查询”导入网页数据,出现0丢失的解决办法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-12-31 17:05 | 显示全部楼层
关于编译错误,你打开VBE窗口,在菜单“工具”下打开“引用”,看看是不是有些已经选择的项目前是否出现“Missing”或“丢失”的字样,然后将该项目的引用取消再试试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-12-31 18:23 | 显示全部楼层
原帖由 winland 于 2008-12-31 17:05 发表
关于编译错误,你打开VBE窗口,在菜单“工具”下打开“引用”,看看是不是有些已经选择的项目前是否出现“Missing”或“丢失”的字样,然后将该项目的引用取消再试试。

谢谢winland版主!
“丢失:Ref Edit Control”,删除后可以用了,但还是不知道怎么分析,ldy版主的那个“百度股票获取例子”如果选择深市的股票,得到的股票代码前置0也是丢失了的,股票代码都是6位数,很容易就可以给代码加上0,但是不规则的数据,不知道有几位数,不知道有几个0,就不好加了,只能手工核对、再加,真的好累,请您帮帮忙想想好的解决办法。先谢了!

TA的精华主题

TA的得分主题

发表于 2008-12-31 20:15 | 显示全部楼层
ldy斑竹的例子中股票代码加上0是因为没有设置单元格格式。innerText属性获得的代码是带有0的的,所以你只需要在前面加上Range(Cells(2, 2), Cells(r.Length, 2)).NumberFormatLocal = "@"这一句就可以了。
    Set r = dmt.all.tags("table")(x).Rows
    Range(Cells(2, 2), Cells(r.Length, 2)).NumberFormatLocal = "@"
    For i = 0 To r.Length - 1
        For j = 0 To r(i).Cells.Length - 1
            Sheet3.Cells(i + 1, j + 1) = r(i).Cells(j).innerText
        Next
    Next

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-12-31 21:46 | 显示全部楼层
原帖由 winland 于 2008-12-31 20:15 发表
ldy斑竹的例子中股票代码加上0是因为没有设置单元格格式。innerText属性获得的代码是带有0的的,所以你只需要在前面加上Range(Cells(2, 2), Cells(r.Length, 2)).NumberFormatLocal = "@"这一句就可以了。
    Set  ...

谢谢winland版主!原来innerText属性可以得到,看来这个问题应该可以解决了。只是我对VBA、WebBrowser都不太熟习,不太懂,我先看看能否解决,如果不行再向您请教。谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-1-1 16:49 | 显示全部楼层
winland版主:您好!谢谢您的指点。我现在暂时用ldy版主的“网页分析工具”改了下利用innerText可以得到前置0的数据,但使用中会出现乱码的情况,请您看看网址如下:http://diyliao.tech.topzj.com/thread-2985-1-1.html,用“网页分析工具”的innerText提取表格会出现“k' U7 x9 s!”这样的乱码,请问有什么办法能不要这些乱码,只提取所需要的数据吗?再次谢谢您!也借此谢过ldy版主!

TA的精华主题

TA的得分主题

发表于 2009-2-7 21:53 | 显示全部楼层
今天才看到这个帖子。
这个页面中有防复制的代码,直接复制粘贴 也会有故意添加的乱码。
用代码可以剔除,

假如 你的代码是这样的:
set d = dmt.all(xxxxxx) '
debug.pring  d.innerText '  这样的得到的内容有很多乱码

'根据你提供网址需要添加如下代码剔除乱码
For Each p In d.all.tags("span")
  p.innerText = ""
  Next
   For Each p In d.all.tags("font")
  p.innerText = ""
  Next

debug.pring  d.innerText '  这样的得到的内容就干净了

如下:

常用晶体管参数查询
2N109         GE-P 35V 0.15A 0.165W         | 2N1304        GE-N 25V 0.3A 0.15W 10MHz
2N1305        GE-P 30V 0.3A 0.15W 5MHz      | 2N1307        GE-P 30V 0.3A 0.15W B>60
2N1613        SI-N 75V 1A 0.8W 60MHz        | 2N1711        SI-N 75V 1A 0.8W 70MHz
2N1893        SI-N 120V 0.5A 0.8W           | 2N2102        SI-N 120V 1A 1W <120MHz
2N2148        GE-P 60V 5A 12.5W             | 2N2165        SI-P 30V 50mA 0.15W 18MHz
2N2166        SI-P 15V 50mA 0.15W 10MHz     | 2N2219A       SI-N 40V 0.8A 0.8W 250MHz
2N2222A       SI-N 40V 0.8A 0.5W 300MHz     | 2N2223        2xSI-N 100V 0.5A 0.6W >50
2N2223A       2xSI-N 100V 0.5A 0.6W >50     | 2N2243A       SI-N 120V 1A 0.8W 50MHz
................................................略

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-11 15:43 | 显示全部楼层
原帖由 ldy 于 2009-2-7 21:53 发表
今天才看到这个帖子。
这个页面中有防复制的代码,直接复制粘贴 也会有故意添加的乱码。
用代码可以剔除,

假如 你的代码是这样的:
set d = dmt.all(xxxxxx) '
debug.pring  d.innerText '  这样的得到的内容 ...

谢谢ldy版主!太好了,真的可以啊!您真的太强了,想拜您为师,跟您好好学学。我只能“照葫芦画瓢”半手工的得到想要的数据,不知其所以,希望能跟您系统地学习下,希望您能收下我这个笨学生。先谢谢您了!
另外还有问题想向您请教:如果网页是表格,又有防复制的代码,要怎样写代码才能去掉乱码得到表格呢?我试了半天,总是不行,不是程序不能运行,就是得不到表格。请您指点下,下面的程序要怎样改?谢谢!
Private Sub CommandButton26_Click()
Dim d
Sheet3.Select
    k = Range("b65536").End(xlUp).Row
    Set dmt = WebBrowser1.Document
    Set d = dmt.all()
     For Each p In dmt.all.tags("span")
           p.innerText = ""
     Next
     For Each p In dmt.all.tags("font")
           p.innerText = ""
     Next
    For i = 0 To dmt.all.tags("table").Length - 1
    Set r = dmt.all.tags("table")(i).Rows
        For j = 0 To r.Length - 1
            For z = 0 To r(j).Cells.Length - 1
                Sheet3.Cells(j + k, z + 1) = r(j).Cells(z).innerText
            Next
        Next
        k = j + k
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2009-2-11 17:15 | 显示全部楼层
防复制代码不一定相同,具体页面要具体分析。

你用工具的全部分析一下,看看乱码在哪里,再编写代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-11 18:06 | 显示全部楼层
原帖由 ldy 于 2009-2-11 17:15 发表
防复制代码不一定相同,具体页面要具体分析。

你用工具的全部分析一下,看看乱码在哪里,再编写代码

谢谢ldy版主!谢谢您的指点!我看了一下发现"span"、"td"、"font"中有乱码,但是"font"中有需要的数据,改成下面的程序,去掉了"font"部份,现在可以得到表格,乱码也少了很多,谢谢您!还有以下两个问题向您请教:1、"font"里的乱码有办法去除吗?在表格中能不能只取部份"font"里的值?如何控制?要是可以就好了,只取需要的。2、"strong"的值能直接提取吗?请您指点。先谢谢老师!学生拜上。
Private Sub CommandButton26_Click()
Dim d
Sheet3.Select
    k = Range("b65536").End(xlUp).Row
    Set dmt = WebBrowser1.Document
    Set d = dmt.all()
     For Each p In dmt.all.tags("span")
           p.innerText = ""
     Next
    For i = 0 To dmt.all.tags("table").Length - 1
    Set r = dmt.all.tags("table")(i).Rows
        For j = 0 To r.Length - 1
            For z = 0 To r(j).Cells.Length - 1
                Sheet3.Cells(j + k, z + 1) = r(j).Cells(z).innerText
            Next
        Next
        k = j + k
    Next
End Sub

TA的精华主题

TA的得分主题

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

本版积分规则

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

GMT+8, 2024-9-29 12:26 , Processed in 0.046441 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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