作者:绿色风
分类:
时间:2022-08-17
浏览:197
楼主 xmyjk |
Q:如何运用VBA控制IE进行页面查询并进行文件下载和保存 网页地址:http://219.132.79.206/login.aspx 输入:用户名pnco和密码1234,登录,登录后点击界面左侧的放大镜图像下的:“每日信息”,之后点击“每日箱动态查询” 之后是点选方框,默认是全选 改为只选3个: PNCO_O PNCO_OCL PNCO_OL, 之后修改上面的时间为 2012-05-12 08:00(可通过读取单元格数据实现),下面的时间不变 然后点提交,提交后(将弹出网页),点“导出EXCEL” 点保存 点保存(需保存在桌面)
A: 请按http://wenku.baidu.com/view/69b54e88d0d233d4b14e6924.html设置IE可运行文件下载。
自动下载到C盘,并保存为myfile.xls。- Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
- Option Explicit
- Sub a()
- Dim ie1 As Object, t As Single
- Dim dWinFolder As New ShellWindows, oj
- Set ie1 = CreateObject("InternetExplorer.Application")
- With ie1
- .Visible = True
- .Navigate "http://219.132.79.206/login.aspx" '网址
- Do Until .ReadyState = 4 And .Busy = False
- DoEvents
- Loop
- .Document.all("_ctl0_ContentPlaceHolder1_txtUserID").Value = "pnco"
- .Document.all("_ctl0_ContentPlaceHolder1_txtPWD").Value = "1234"
- .Document.all("_ctl0_ContentPlaceHolder1_btnLogin").Click
- Do Until .ReadyState = 4 And .Busy = False
- DoEvents
- Loop
- .Navigate "http://219.132.79.206/main.aspx?NAVID=EveryDynamicContainerQuery&q=0"
- Do Until .ReadyState = 4 And .Busy = False
- DoEvents
- Loop
- With .Document
- .all("_ctl0_ContentPlaceHolder1_CB_CHL_1338").Click
- On Error Resume Next
- Do Until ie1.ReadyState = 4 And ie1.Busy = False And .all("_ctl0_ContentPlaceHolder1_CHL_1338_5").Checked = False
- DoEvents
- Loop
- On Error GoTo 0
- .all("_ctl0_ContentPlaceHolder1_CHL_1338_6").Checked = True
- .all("_ctl0_ContentPlaceHolder1_CHL_1338_7").Checked = True
- .all("_ctl0_ContentPlaceHolder1_CHL_1338_8").Checked = True
- .all("_ctl0:ContentPlaceHolder1:DATE_1344Input").Value = "2012-03-01 08:00"
- .all("_ctl0_ContentPlaceHolder1_btnOK").Click
- t = Timer
- Do Until ie1.ReadyState = 4 And ie1.Busy = False And Timer > t + 1
- DoEvents
- Loop
- Do
- For Each oj In dWinFolder
- If InStr(oj.LocationName, "查询结果") > 0 Then Exit Do
- Next
- DoEvents
- Loop
- .parentwindow.eval "javascript:window.opener=null;window.open('','_self');window.close();"
- Set ie1 = oj
- Do Until ie1.ReadyState = 4 And ie1.Busy = False
- DoEvents
- Loop
- End With
- End With
- ie1.Document.all("btnExcel").Click
- Do Until FindWindow(vbNullString, "文件下载") > 0
- DoEvents
- Loop
- Sleep 600
- SendKeys "%S"
- Do Until FindWindow(vbNullString, "另存为") > 0
- DoEvents
- Loop
- SendKeys "c:\myfile.xls", True
- SendKeys "%S"
- Set ie1 = Nothing
- End Sub
qaaa.rar |
2楼 亡者天下 |
学习了
厉害啊
|
3楼 水星钓鱼 |
大牛,学习 |
4楼 su0nils000 |
sendkey**!这个很无语,太不稳定了 |
5楼 su0nils000 |
原本以为可以学到点东西,原来是SENDKEY...... |
6楼 0Mouse |
不管怎么说也是一种方法,在想不到其它解决方案的时候还是得靠它。 |
7楼 su0nils000 |
我倒不是反对sendkey,而是看了一大坨代码,好像很高深,其实很浅出 |
8楼 0Mouse |
那这貌似也只能说明您对于用代码控制网页和挖掘网页数据的技法掌握的比较娴熟,摘掉“新手”的帽子很久了,但这并不 能说本帖就一点技术含量都没有,对于像我这样尚未进行过这方面探索的读者来说,此帖仍值得细读和借鉴。难易是相对的 !会者不难,难者不会。您要是觉得不值一读,那就当路过好了啊!如果能露两手高招,那更是后来读者的福气,但我觉得 没必要丢给别人一种“不屑”的评论。难道您认为这样更能凸显出您的见多识广和精湛技术?!我想更多的是反作用吧!如 果您看了我的回复,心中有一丝不悦,那我想您也一定能体会楼主看到您3楼和7楼的感受了!得罪之处,还望见谅! |
9楼 su0nils000 |
你的理解力令人捉急...虽然令你生气,我很抱歉,没时间给你解释...您慢慢自己个消化去吧. |
10楼 0Mouse |
抱歉之词言重了!不过我绝对是这方面的菜鸟,确实需要慢慢消化,不懂装懂乱发评论让您见笑了。走好! |
11楼 老糊涂 |
|
12楼 张雄友 |
赞同啊。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一