ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助将网页表格转换为Excel表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-12-31 23:49 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

想问问各位大神,怎么可以把下面的这个网站查询到的信息用VBA转换为excel表格,并且可以随时手动刷新获取新的数据,不用VBA也可以,只要能达到一样的结果也可以。



https://www.chinamoney.com.cn/ch ... 000&reference=1






网站内容如下

image.png

TA的精华主题

TA的得分主题

发表于 2024-1-1 12:51 | 显示全部楼层
本帖最后由 perfect131 于 2024-1-1 13:10 编辑

直接复制粘贴
https://club.excelhome.net/thread-1628424-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-2 12:58 | 显示全部楼层
perfect131 发表于 2024-1-1 12:51
直接复制粘贴
https://club.excelhome.net/thread-1628424-1-1.html

我替换网址后使用tableTest运行会提示type mismatch,    Set Table = tables(0)会高亮提示错误。使用alltableTest完全没有任何提示但也没有输出结果,请问是怎么回事呢

TA的精华主题

TA的得分主题

发表于 2024-1-2 14:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lf2250891 发表于 2024-1-2 12:58
我替换网址后使用tableTest运行会提示type mismatch,    Set Table = tables(0)会高亮提示错误。使用allt ...

你的代码呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-2 20:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. ''''对应表格复制
  2. Sub tableTest()
  3.     Set WinHttp = CreateObject("winhttp.WinHttpRequest.5.1")
  4.     Set HTML = CreateObject("htmlfile")
  5.     Set oWindow = HTML.ParentWindow
  6.     Url = "https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1"
  7.     With WinHttp
  8.         .Open "GET", Url, False
  9.         .send
  10.         strText = .responsetext
  11. ''            Debug.Print strText
  12.     End With
  13.     HTML.body.innerhtml = strText
  14.     Set tables = HTML.getElementsByClassName("tableFull")
  15.     Set Table = tables(0)
  16.    
  17.     '''写入剪切板 第一种
  18.     oWindow.ClipboardData.SetData "text", Table.outerHTML
  19.    
  20.     '''写入剪切板 第二种
  21. '    Set clipboard = New MSForms.DataObject
  22. '    clipboard.SetText Table.outerHTML
  23. '    clipboard.PutInClipboard

  24.     ActiveSheet.Range("a1").Select
  25.     ActiveSheet.Paste
  26.    
  27.     Set WinHttp = Nothing
  28.     Set HTML = Nothing
  29.     Set oWindow = Nothing
  30. End Sub
  31. ''''所有表格
  32. Sub alltableTest()
  33.     Set WinHttp = CreateObject("winhttp.WinHttpRequest.5.1")
  34.     Set HTML = CreateObject("htmlfile")
  35.     Set oWindow = HTML.ParentWindow
  36.     Url = "https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1"
  37.     With WinHttp
  38.         .Open "GET", Url, False
  39.         .send
  40.         strText = .responsetext
  41. ''            Debug.Print strText
  42.     End With
  43.     HTML.body.innerhtml = strText
  44.     Set tables = HTML.getElementsByTagName("table")
  45.     aa = 1
  46.     For i = 0 To tables.Length - 1
  47.         Set Table = tables(i)
  48.         
  49.         '''写入剪切板 第一种
  50.         oWindow.ClipboardData.SetData "text", Table.outerHTML
  51.         
  52.         '''写入剪切板 第二种
  53.     '    Set clipboard = New MSForms.DataObject
  54.     '    clipboard.SetText Table.outerHTML
  55.     '    clipboard.PutInClipboard
  56.    
  57.         ActiveSheet.Cells(1, aa).Select
  58.         ActiveSheet.Paste
  59.         oWindow.ClipboardData.SetData "text", ""
  60.         aa = ActiveSheet.UsedRange.Columns.Count + 2
  61.     Next
  62.     Set WinHttp = Nothing
  63.     Set HTML = Nothing
  64.     Set oWindow = Nothing
  65. End Sub
复制代码



我是直接把贴里代码的连接给替换后重试

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-2 21:17 | 显示全部楼层

  1. Sub tableTest()
  2.     Set WinHttp = CreateObject("winhttp.WinHttpRequest.5.1")
  3.     Set HTML = CreateObject("htmlfile")
  4.     Set oWindow = HTML.ParentWindow
  5.     Url = "https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1"
  6.     With WinHttp
  7.         .Open "GET", Url, False
  8.         .send
  9.         strText = .responsetext
  10. ''            Debug.Print strText
  11.     End With
  12.     HTML.body.innerhtml = strText
  13.     Set tables = HTML.getElementsByClassName("tableFull")
  14.     Set Table = tables(0)
  15.    
  16.     oWindow.ClipboardData.SetData "text", Table.outerHTML
  17.    


  18.     ActiveSheet.Range("a1").Select
  19.     ActiveSheet.Paste
  20.    
  21.     Set WinHttp = Nothing
  22.     Set HTML = Nothing
  23.     Set oWindow = Nothing
  24. End Sub
  25. ''''ËùÓбí¸ñ
  26. Sub alltableTest()
  27.     Set WinHttp = CreateObject("winhttp.WinHttpRequest.5.1")
  28.     Set HTML = CreateObject("htmlfile")
  29.     Set oWindow = HTML.ParentWindow
  30.     Url = "https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1"
  31.     With WinHttp
  32.         .Open "GET", Url, False
  33.         .send
  34.         strText = .responsetext
  35. ''            Debug.Print strText
  36.     End With
  37.     HTML.body.innerhtml = strText
  38.     Set tables = HTML.getElementsByTagName("table")
  39.     aa = 1
  40.     For i = 0 To tables.Length - 1
  41.         Set Table = tables(i)
  42.         
  43.         '''дÈë¼ôÇÐ°å µÚÒ»ÖÖ
  44.         oWindow.ClipboardData.SetData "text", Table.outerHTML
  45.         
  46.         '''дÈë¼ôÇÐ°å µÚ¶þÖÖ
  47.     '    Set clipboard = New MSForms.DataObject
  48.     '    clipboard.SetText Table.outerHTML
  49.     '    clipboard.PutInClipboard
  50.    
  51.         ActiveSheet.Cells(1, aa).Select
  52.         ActiveSheet.Paste
  53.         oWindow.ClipboardData.SetData "text", ""
  54.         aa = ActiveSheet.UsedRange.Columns.Count + 2
  55.     Next
  56.     Set WinHttp = Nothing
  57.     Set HTML = Nothing
  58.     Set oWindow = Nothing
  59. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-1-3 15:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 perfect131 于 2024-1-3 15:15 编辑

哪有这么简单,先正确获取源码才能 复制粘贴,或者用 ie获取动态源码 复制粘贴

CTRL+U 可以看到  网页静态源码,并没有 表格内容 ,说明这个是 js渲染后输出的表格
image.png

所以你要用 IE获取动态源码 复值粘贴
参考 39楼 44 楼
https://club.excelhome.net/forum ... 628424&pid=11091361
2 楼 静态源码 跟 动态源码的区别
https://club.excelhome.net/forum ... 681359&pid=11406374

学点html js 自动化就会了

image.png
3.jpg

仅供参考,

想要更快更稳那就找到接口 POST GET就可以, 一页能获取 一百多条数据 ,有偿就找我
image.jpg

https://club.excelhome.net/forum ... 680641&pid=11400419



您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 15:37 , Processed in 0.044854 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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