作者:绿色风
分类:
时间:2022-08-17
浏览:131
楼主 xmyjk |
Q:如何获取http://www.51auto.com/sell/,如图所示的“品牌 ----- 车系-----出厂年份-----车型”的下拉菜单的菜单数据。
A:分析过程: 品牌数据是页面加载完毕就有了,车系的数据要选择完哪个品牌后再从服务器取得的,出厂年份要在车系选择后才从服务器取得,车型要在年份选择后从服务器取得。 因此要层层选定,并触发select控件的onchange事件,取得数据后,再取得下一级,最后取数。
代码如下,运行后,程序会暂停,然后点掉两个提示框,然后继续运行,即可继续输出。- Option Explicit
- Sub a()
- Dim ie1 As Object, dmt As Object, r As Object, i As Long, k As Long, j As Long, l As Long, t
- ' Load UserForm1
- ' UserForm1.Show 0
- [a1].CurrentRegion.Clear '清空工作表
- Cells.NumberFormat = "@"
- Set ie1 = UserForm1.WebBrowser1
- With ie1
- .Navigate "http://www.51auto.com/sell/" '激活网址
- Do Until .ReadyState = 4 And .Busy = False '等待页面加载完毕
- DoEvents
- Loop
- Set dmt = .Document '取得文档
- Stop
- For i = 1 To dmt.All("**MakeCode").Length - 1 '获取数据表
- If dmt.All("**MakeCode")(i).Value <> "" Then '剔除无关项目
- dmt.All("**MakeCode").Value = dmt.All("**MakeCode")(i).innertext '按顺序设置品牌项目
- dmt.All("**MakeCode").fireevent ("onchange") '触发事件获取下级菜单
- t = Timer
- Do Until .ReadyState = 4 And .Busy = False And Timer > t + 1 '待加载完毕
- DoEvents
- Loop
- Set dmt = .Document
- For j = 1 To dmt.All("**Family").Length - 1 '同上,开始设置车系并取得下级菜单
- If dmt.All("**Family")(j).Value <> "" Then
- dmt.All("**Family").Value = dmt.All("**Family")(j).Value
- dmt.All("**Family").fireevent ("onchange")
- t = Timer
- Do Until .ReadyState = 4 And .Busy = False And Timer > t + 1
- DoEvents
- Loop
- Set dmt = .Document
- For k = 1 To dmt.All("VehicleYear").Length - 1 '同上,设置年份,取得下级菜单
- If dmt.All("VehicleYear")(k).Value <> "" Then
- dmt.All("VehicleYear").Value = dmt.All("VehicleYear")(k).Value
- dmt.All("VehicleYear").fireevent ("onchange")
- t = Timer
- Do Until .ReadyState = 4 And .Busy = False And Timer > t + 1
- DoEvents
- Loop
- Set dmt = .Document
- For l = 1 To dmt.All("VehicleKey").Length - 1 '开始从车型的菜单中提取数据
- With [a65536].End(3).Offset(1)
- .Offset(, 0) = dmt.All("**MakeCode").Value
- .Offset(, 1) = dmt.All("**Family").Value
- .Offset(, 2) = dmt.All("VehicleYear").Value
- .Offset(, 3) = dmt.All("VehicleKey")(l).innertext
- End With
- Next
- End If
- Next
- End If
- Next
- End If
- Next
- End With
- Set ie1 = Nothing
- Set dmt = Nothing
- End Sub
111222.zip |
2楼 亡者天下 |
弦月的VBA越来越强悍了 |
3楼 wudixin96 |
相当看不懂 |
4楼 lrlxxqxa |
结构很棒:图解+分析过程+代码解析注释+附件 今后再把附件名字编辑一下就更好了 |
5楼 hl_irnt |
收藏先 |
6楼 CJH-龙年快乐 |
先收藏,回头再慢慢看! |
7楼 spell-chang |
太有用了 |
8楼 sharkzhou |
我也看不洞。先收下 |
9楼 stevefigo |
了解,学习! |
10楼 L_924 |
楼主,代码运行有错,不懂[attachimg]74930QQ截图20121012085142.jpg |
11楼 水星钓鱼 |
牛B,学习 |
12楼 rongjun |
学习了! |
13楼 老糊涂 |
下载学习 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一