繁体   English   中英

Excel VBA - 保存当前网址以在另一个子程序中使用

[英]Excel VBA - save current web address to use in another sub routine

快速问题我希望有一个简单的答案。 我有一个通过网页导航的子例程。 “子导航()”

Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True

等等.....

这部分工作正常,我根据需要成功浏览了 IE。 我的下一步来自一个单独的子例程“Sub copyimage()”,我设计了从活动页面拉出图像的地方。 但是,我无法弄清楚如何为此使用打开的网页。

如果我直接导​​航到此子文件中的 URL,则“Sub Copyimage()”子文件有效。 但我希望能够从我的“Sub Navigate()”代码的工作中到达那里。

我希望能够从 navigate() 子例程调用 Copyimage() 子例程。

请帮忙

这是第一个子文件的完整代码:

Sub FMSWebsite()
Dim strURL
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
strURL = "https://functionalmovement.com/login?return=%2F"
ie.Navigate strURL
ie.Visible = True
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop
ie.Document.forms(0).all("Username").Value = Worksheets("Cover").Range("E8")
ie.Document.forms(0).all("Password").Value = Worksheets("Cover").Range("E10")
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

ie.Document.forms(0).submit
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

Application.Wait (now + TimeValue("0:00:01"))
ie.Navigate ("http://functionalmovement.com/pro/clients")
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop


ie.Document.forms(1).all("gvClients$DXFREditorcol1").Value = Worksheets("Template").Range("X2")
ie.Document.forms(1).all("gvClients$DXFREditorcol1").Select

SendKeys String:="{enter}", Wait:=True

Application.Wait (now + TimeValue("0:00:03"))
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

Dim e
For Each e In ie.Document.getElementsByTagName("strong")
If e.innerText = "Client Workouts" Then
e.ParentElement.Click
Exit For
End If
Next

Application.Wait (now + TimeValue("0:00:01"))
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

For Each e In ie.Document.getElementsByTagName("span")
If e.innerText = "Create a New Workout" Then
e.ParentElement.Click
Exit For
End If
Next
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

Application.Wait (now + TimeValue("0:00:01"))

For Each e In ie.Document.getElementsByTagName("span")
If e.innerText = "NEXT" Then
e.ParentElement.Click
Exit For
End If
Next
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

Application.Wait (now + TimeValue("0:00:01"))
Set goBtn = ie.Document.getElementById("newscreen")
goBtn.Click

Application.Wait (now + TimeValue("0:00:01"))
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

快进一些代码它像这样结束:

For Each e In ie.Document.getElementsByTagName("span")
If e.innerText = "Complete" Then
e.ParentElement.Click
Exit For
End If
Next
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop

Application.Wait (now + TimeValue("0:00:03"))
Do While (ie.Busy Or ie.READYSTATE <> 4)
DoEvents
Loop
For Each e In ie.Document.getElementsByTagName("span")
If e.innerText = "View Assigned Workout" Then
e.ParentElement.Click
Exit For
End If
Next
End Sub

我的下一个子从

Sub findimageA ()
For Each Elem In ie.Document.getElementsByTagName("img")
If Elem.getAttribute("title") = "Step 1" Then

如何引用我在第一个子文件中结尾的网址?

我相信你在Navigate()类似的东西:

Dim ieDocument as Object 

它代表一个网页(网络文档)。 如果是这样,您需要创建带有参数的Copyimage()子例程,如下所示:

Sub Copyimage(ieDocImages as object)

并从前一个传递文档( ieDocument )中调用此子函数作为参数:

Call Copyimage(ieDocument)

或根据您使用的变量做类似的事情。

编辑,基于有问题的附加代码

首先在End Sub之前或终止ie object之前添加以下行:

Call findimagA(ie.Document)

并按如下方式更改第二个子项:

Sub findimageA(ieDocument As Object)
For Each Elem In ieDocument.getElementsByTagName("img")

没有经过测试,但我确定没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM