|
本帖最后由 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" <------这个也要按千之以上~"~哭死
|
|