【发布时间】:2018-01-26 21:10:03
【问题描述】:
下载会跳过宏的其余部分。
目前我有一个子程序用于进入网页并下载文件。它会打开一个栏,询问“打开、保存、另存为”我使用发送键%O 打开文件。文件打开后,我想使用另一个代码来处理文档,问题是文件仅在宏的其余部分完成后打开。由于某种原因,它基本上跳过了我的宏的其余部分。
这是我正在做的一个例子:
Sub iaspull()
Set ie = CreateObject("InternetExplorer.Application")
my_url = "***"
With ie
.Visible = True
.navigate my_url
Do Until Not ie.Busy And ie.readyState = 4
DoEvents
Loop
' Some code to get to the file and click download
End With
Application.Wait (Now + TimeValue("00:00:08"))
Application.SendKeys "%{O}", True
DoEvents
End Sub
Sub enable_edit()
Application.ActiveProtectedViewWindow.Edit
End Sub
一旦代码到达.SendKeys "%{O}",它就可以打开,但如果后面有更多代码,它就会跳过代码。
我希望能够一个接一个地运行这两个子例程。我宁愿不保存或使用另存为功能来保持这个更通用。
请告诉我你的想法!
【问题讨论】:
-
在某一时刻,您有“End Sub”,然后是“Sub enable_edit()”。这将结束第一个宏并开始一个新宏。这是期望的行为吗?
-
这是我尝试解决的问题,以使第一个宏结束并打开文件。
-
@Sam 所以这篇文章建议我创建发送密钥作为子程序,以便与我的原始子程序一起使用?我对如何使用这篇文章感到困惑。尽管如此,非常感谢您的评论!
-
@metalmania7778 然后尝试使用
Workbooks.OpenMethod而不是.SendKeys打开文件,避免异步打开。DoEvents循环内直到目标文件在打开之前存在,然后.Wait也不是必需的。问题中的第一句话还指出“下载跳过了宏的其余部分”,如果您确定下载工作正常,那么最好对其进行编辑。
标签: vba excel web-scraping automation sendkeys