Excel 等待VBA中出现“下载”对话框
我正在编写一个脚本,该脚本将自动从URL下载excel。我面临的问题是,对话框出现的时间不是固定的,因此我无法硬编码等待时间。 我需要一个代码,它将等待对话框出现,然后单击另存为按钮。Excel 等待VBA中出现“下载”对话框,excel,vba,Excel,Vba,我正在编写一个脚本,该脚本将自动从URL下载excel。我面临的问题是,对话框出现的时间不是固定的,因此我无法硬编码等待时间。 我需要一个代码,它将等待对话框出现,然后单击另存为按钮。 提前感谢我不确定您指的是什么类型的对话框,但这里有几个脚本可以从web下载文件 将其放入单元格A1: 把这个放在B1单元: C:\Users\user\Desktop\或要将文件下载到的路径 将其放入单元格C1: 文件下载成功 运行此代码 Private Declare Function URLDownload
提前感谢我不确定您指的是什么类型的对话框,但这里有几个脚本可以从web下载文件 将其放入单元格A1: 把这个放在B1单元: C:\Users\user\Desktop\或要将文件下载到的路径 将其放入单元格C1: 文件下载成功 运行此代码
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Sub pMain()
Dim sURL As String
Dim sDestination As String
Dim bSuccess As Boolean
Dim lRow As Long
Dim ws As Excel.Worksheet
Dim strSavePath As String
Dim URL As String, ext As String
Dim buf, ret As Long
'Change to suit
Set ws = ThisWorkbook.Worksheets("Sheet1")
With ws
For lRow = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
sURL = .Cells(lRow, "A")
sDestination = .Cells(lRow, "B")
buf = Split(sURL, ".")
ext = buf(UBound(buf))
pos = InStrRev(sURL, "/", -1)
file = Mid(sURL, pos + 1, 99)
strSavePath = sDestination & file
ret = URLDownloadToFile(0, sURL, strSavePath, 0, 0)
If ret = 0 Then
.Cells(lRow, "C") = "File download successfully!"
Else
.Cells(lRow, "C") = "Couldn't download the file!"
End If
DoEvents
Next lRow
End With
End Sub
还有,试试这个
专用声明函数URLDownloadToFile Lib“urlmon”别名_
“URLDownloadToFileA”(ByVal pCaller为长,ByVal szURL为字符串,ByVal_
szFileName作为字符串,ByVal dwReserved作为Long,ByVal lpfnCB作为Long)作为Long
我不确定你指的是什么样的对话框,但这里有几个脚本可以从网上下载文件 将其放入单元格A1: 把这个放在B1单元: C:\Users\user\Desktop\或要将文件下载到的路径 将其放入单元格C1: 文件下载成功 运行此代码
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Sub pMain()
Dim sURL As String
Dim sDestination As String
Dim bSuccess As Boolean
Dim lRow As Long
Dim ws As Excel.Worksheet
Dim strSavePath As String
Dim URL As String, ext As String
Dim buf, ret As Long
'Change to suit
Set ws = ThisWorkbook.Worksheets("Sheet1")
With ws
For lRow = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
sURL = .Cells(lRow, "A")
sDestination = .Cells(lRow, "B")
buf = Split(sURL, ".")
ext = buf(UBound(buf))
pos = InStrRev(sURL, "/", -1)
file = Mid(sURL, pos + 1, 99)
strSavePath = sDestination & file
ret = URLDownloadToFile(0, sURL, strSavePath, 0, 0)
If ret = 0 Then
.Cells(lRow, "C") = "File download successfully!"
Else
.Cells(lRow, "C") = "Couldn't download the file!"
End If
DoEvents
Next lRow
End With
End Sub
还有,试试这个
专用声明函数URLDownloadToFile Lib“urlmon”别名_
“URLDownloadToFileA”(ByVal pCaller为长,ByVal szURL为字符串,ByVal_
szFileName作为字符串,ByVal dwReserved作为Long,ByVal lpfnCB作为Long)作为Long
谢谢你花时间回答我的问题 我终于找到了解决这个问题的方法。我使用了下面的代码
Dim website
website = "http://yoursite.com"
With IE
.Visible = True
.navigate website
End With
Application.Wait (Now + TimeValue("0:00:02"))
Cells(1, 1) = GetTitle
var = CheckTitle(Cells(1, 1))
Do While var = False
Cells(1, 1) = GetTitle
var = CheckTitle(Cells(1, 1))
Loop
Cells(1, 1) = ""
函数GetTitle()
端函数
函数CheckTitle(checkval为字符串)为布尔值
If checkval <> "Internet Explorer" Then
CheckTitle = False
Application.Wait (Now + TimeValue("0:0:10"))
Else
CheckTitle = True
End If
如果选中val“Internet Explorer”,则
CheckTitle=False
Application.Wait(现在+时间值(“0:0:10”))
其他的
CheckTitle=True
如果结束
结束函数感谢您抽出时间回答我的问题 我终于找到了解决这个问题的方法。我使用了下面的代码
Dim website
website = "http://yoursite.com"
With IE
.Visible = True
.navigate website
End With
Application.Wait (Now + TimeValue("0:00:02"))
Cells(1, 1) = GetTitle
var = CheckTitle(Cells(1, 1))
Do While var = False
Cells(1, 1) = GetTitle
var = CheckTitle(Cells(1, 1))
Loop
Cells(1, 1) = ""
函数GetTitle()
端函数
函数CheckTitle(checkval为字符串)为布尔值
If checkval <> "Internet Explorer" Then
CheckTitle = False
Application.Wait (Now + TimeValue("0:0:10"))
Else
CheckTitle = True
End If
如果选中val“Internet Explorer”,则
CheckTitle=False
Application.Wait(现在+时间值(“0:0:10”))
其他的
CheckTitle=True
如果结束
结束函数?请显示您正在尝试使用的代码。如果不显示您的代码,就很难对可能是非常具体的问题提出适当的解决方案。这可能有用,也可能不有用(我很难知道,因为我不知道您已经尝试了什么…?请显示您正在尝试使用的代码。如果不显示您的代码,就很难对可能是非常具体的问题提出适当的解决方案。这可能有用,也可能不有用(我很难知道,因为我不知道您已经尝试了什么…)您好,感谢replyDim网站=“&server&”&c=0&sd=“&fDate&”&ed=“&lDate&”“&theme id=portal&r=excel”“使用IE.Visible=True。在IE.Busy或IE.readyState 4事件循环结束时浏览网站。我正在使用此代码打开将开始处理的网页。处理完成后,将显示下载对话框。我可以使用SendKeys处理对话框。此处的处理时间不是固定的,它取决于要下载的excel工作簿的大小。这就是为什么我不能硬编码等待时间并等待对话框出现,然后进行进一步处理的原因。这里提到的URL位于客户端网络上,我猜您将无法访问它。您好,感谢replyDim网站=“&server&”&c=0&sd=“&fDate&”&ed=“&lDate&”&theme id=portal&r=excel”当IE.Visible=True时,在IE.Busy或IE.readyState 4事件循环结束时浏览网站。我正在使用此代码打开将开始处理的网页。处理完成后,将显示下载对话框。我可以使用SendKeys处理对话框。此处的处理时间不是固定的,它取决于要下载的excel工作簿的大小。这就是为什么我不能硬编码等待时间,并等待对话框出现,然后进行进一步的处理。这里提到的URL位于客户端网络上,我猜您将无法访问它。