ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何运用VBA控制IE进行页面查询并进行文件下载和保存

如何运用VBA控制IE进行页面查询并进行文件下载和保存

作者:绿色风 分类: 时间: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。
  1. Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  2. Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  3. Option Explicit
  4. Sub a()
  5.     Dim ie1 As Object, t As Single
  6.     Dim dWinFolder As New ShellWindows, oj
  7.     Set ie1 = CreateObject("InternetExplorer.Application")

  8.     With ie1
  9.         .Visible = True
  10.         .Navigate "http://219.132.79.206/login.aspx"    '网址
  11.         Do Until .ReadyState = 4 And .Busy = False
  12.             DoEvents
  13.         Loop
  14.         .Document.all("_ctl0_ContentPlaceHolder1_txtUserID").Value = "pnco"
  15.         .Document.all("_ctl0_ContentPlaceHolder1_txtPWD").Value = "1234"
  16.         .Document.all("_ctl0_ContentPlaceHolder1_btnLogin").Click
  17.         Do Until .ReadyState = 4 And .Busy = False
  18.             DoEvents
  19.         Loop
  20.         .Navigate "http://219.132.79.206/main.aspx?NAVID=EveryDynamicContainerQuery&q=0"
  21.         Do Until .ReadyState = 4 And .Busy = False
  22.             DoEvents
  23.         Loop
  24.         With .Document
  25.             .all("_ctl0_ContentPlaceHolder1_CB_CHL_1338").Click
  26.             On Error Resume Next
  27.             Do Until ie1.ReadyState = 4 And ie1.Busy = False And .all("_ctl0_ContentPlaceHolder1_CHL_1338_5").Checked = False
  28.                 DoEvents
  29.             Loop
  30.             On Error GoTo 0
  31.             .all("_ctl0_ContentPlaceHolder1_CHL_1338_6").Checked = True
  32.             .all("_ctl0_ContentPlaceHolder1_CHL_1338_7").Checked = True
  33.             .all("_ctl0_ContentPlaceHolder1_CHL_1338_8").Checked = True
  34.             .all("_ctl0:ContentPlaceHolder1:DATE_1344Input").Value = "2012-03-01 08:00"
  35.             .all("_ctl0_ContentPlaceHolder1_btnOK").Click
  36.             t = Timer
  37.             Do Until ie1.ReadyState = 4 And ie1.Busy = False And Timer > t + 1
  38.                 DoEvents
  39.             Loop
  40.             Do
  41.                 For Each oj In dWinFolder
  42.                     If InStr(oj.LocationName, "查询结果") > 0 Then Exit Do
  43.                 Next
  44.                 DoEvents
  45.             Loop
  46.             .parentwindow.eval "javascript:window.opener=null;window.open('','_self');window.close();"
  47.             Set ie1 = oj
  48.             Do Until ie1.ReadyState = 4 And ie1.Busy = False
  49.                 DoEvents
  50.             Loop
  51.         End With
  52.     End With
  53.     ie1.Document.all("btnExcel").Click
  54.     Do Until FindWindow(vbNullString, "文件下载") > 0
  55.         DoEvents
  56.     Loop
  57.     Sleep 600
  58.     SendKeys "%S"
  59.     Do Until FindWindow(vbNullString, "另存为") > 0
  60.         DoEvents
  61.     Loop
  62.     SendKeys "c:\myfile.xls", True
  63.     SendKeys "%S"
  64.     Set ie1 = Nothing
  65. 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总版主之一

评论列表
sitemap