ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] vba 对当前已打开的网页输入资料

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-2-1 07:35 | 显示全部楼层 |阅读模式
本帖最后由 arnoxwong 于 2013-2-1 07:35 编辑

各位大大
小弟想在第一次输入时打开网页,之后再在同一网页继续入资料
VBA流程是先打开网页A输入单号,会自动跳去网页B入资料,之后会跳回网页A ,完成一个循环

以下是小弟参考程序开发版资料汇总(第4部分)第一次写的VBA ,虽然方法很笨,但总算可以勉强运行,但有几个问题不知如何解决,希望各位大大指点一下
---------------------------------
Sub A()

Worksheets("Sheet1").Select
Worksheets("Sheet1").Range("D1").Select
If Worksheets("Sheet1").Range("D2").Value = "" Then Number = 1 Else Number = 2

If Number = 1 Then GoTo First
If Number = 2 Then GoTo Second

First:
DE.A
GoTo Fok
Second:
DE2.B
Fok:
End Sub
-------
Sub A()

'第一步,第一次打開網頁入資料
With CreateObject("InternetExplorer.Application")     '打开网页
.Visible = True
.navigate "http://xxxxxx.com"                                 '去指定网页 A
Do Until .Readystate = 4                                           '等网页A加载完成
DoEvents
Loop


.Document.All("objEdiFhlHawb1").Value = "12334567"         
.Document.All("loginBtn").Click                               '按了后会跳去网页B

'不知怎样写等网页B加载完成 ,唯有强行等3秒 ,这个求指点
waitTime = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3)
Application.Wait waitTime


.Document.All("objEdiFhlHawb3").Value = Worksheets("Sheet1").Range("A2").Value
.Document.All("objEdiFhlHawb4").Value = Worksheets("Sheet1").Range("B2").Value
.Document.All("objEdiFhlHawb4").Value = Worksheets("Sheet1").Range("C2").Value

Worksheets("Sheet1").Range("D2").Value = "Y"


'    .Document.form.submit  '按了这个就会跳回网页A 完成第一個循環
                               '但这个submit 我不会写,我是手动按储存的@@以下是网页​​的源码  value="(S)ave","(R)eset" 的name都是"Button" ,这个求指点
'   <td align="center">
'     <input type="button" class="btn" name="Button" value="(S)ave" accessKey="S">
'     <input type="button" class="btn" name="Button" value="(R)eset" accessKey="R">
'     <input type="button" accesskey="l" value="C(l)ose" class="btn">
'   <!--
'     <input type="button" class="btn" name="Button" value="(C)ancel" accessKey="C">
'     -->
'   </td>


End With
End Sub
---------------------


Sub C()

'第一次输入完资料后本应已打开了一个网页,而且是回到网页A,但我又不知氏写才能对当前已打开的网页输入资料
'只好手动关闭网页,再用VBA开一个新的网页@@,这个求指点
With CreateObject("InternetExplorer.Application")
.Visible = True
.navigate "http://xxxxxx.com"
Do Until .Readystate = 4
DoEvents
Loop



.Document.All("objEdiFhlHawb1").Value = "123"
.Document.All("loginBtn").Click


waitTime = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3)
Application.Wait waitTime

Worksheets("Sheet1").Range("D1").Select
ActiveCell.End(xlDown).Select
Lastrec = ActiveCell.Row

.Document.All("objEdiFhlHawb3").Value = Worksheets("Sheet1").Range("A" & Lastrec + 1).Value
.Document.All("objEdiFhlHawb4").Value = Worksheets("Sheet1").Range("B" & Lastrec + 1).Value
.Document.All("objEdiFhlHawb4").Value = Worksheets("Sheet1").Range("C" & Lastrec + 1).Value

Worksheets("Sheet1").Range("D" & Lastrec + 1).Value = "Y"


'.Document.form.submit
'不会写,我是手动按储存的@@

End With
End Sub


总结一下问题:
1.SUB C如何不用再打开新的网页,而用SUB A时已打开的网页继续运行资料输入?<-----这个最重要的问题,不然我一晚要关一千次以上
2.Document.All("loginBtn").Click 后会跳去网页B时如何等待加载完成才继续运行资料输入? <------等3秒感觉很危险,公司网络会突然很慢
3.网页B 最后的submit 如何写,value="(S)ave","(R)eset" 的name都是"Button" <------这个也要按千之以上~"~哭死


TA的精华主题

TA的得分主题

发表于 2014-4-28 10:49 | 显示全部楼层
可以用ie.busy=false来判断点击后是否完全加载,比等待一定的时间更可靠些。

TA的精华主题

TA的得分主题

发表于 2014-4-28 21:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不懂,关注一下。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-2 03:23 , Processed in 0.018856 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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