我有一个公司网站发布大型报告,我将其下拉并分成我需要的内容。我可以打开网页并获取我需要打开的电子表格的链接,但是我得到一个用于打开/保存/取消的IE弹出窗口,当我点击打开电子表格时,我得到第二个弹出窗口(来自Excel的这个表示电子表格的格式与扩展名指定的格式不同。“我不知道如果可能的话,如何让第一个弹出窗口离开;我知道的唯一方法通常是防止弹出up with excel是使用DisplayAlerts = False,但添加它似乎没有任何影响。此自动化项目的开始代码如下:
[编辑]我编辑并替换了原始编码,以反映最近的尝试。我已经设法通过第一个文件下载弹出窗口(虽然使用了sendkeys),我正在努力获得第二个弹出窗口(我想这是将焦点转移到excel的问题)。任何关于替换sendkeys部分的建议都是受欢迎的,以及将焦点恢复到excel的建议,以便我可以使用excel来控制第二个弹出窗口(如果这是最好的方法)。更新后的代码如下:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub Automation()
Dim IeApp As Object
Dim IeDoc As Object
Dim URL, URL2 As String
Application.DisplayAlerts = False
URL = "https://companysite.com/directorypage/default.aspx"
URL2 = "https://companysite.com/directorypage/Reports/MyReport.aspx?Format=Excel"
Set IeApp = CreateObject("InternetExplorer.Application")
IeApp.Visible = True
IeApp.Navigate URL
While IeApp.Busy Or IeApp.ReadyState <> 4: DoEvents: Wend
IeApp.Document.All.Item("MainContent_btnAuthenticate").Click
While IeApp.Busy Or IeApp.ReadyState <> 4: DoEvents: Wend
Set IeApp = CreateObject("InternetExplorer.Application")
IeApp.Visible = False
IeApp.Navigate URL2
Do Until thewindow <> 0 'wait for the "File Download" popup window to appear
thewindow = FindWindow(vbNullString, "File Download")
Loop
SendKeys "{LEFT}"
Application.Wait Now + TimeValue("00:00:01")
SendKeys "{LEFT}"
Application.Wait Now + TimeValue("00:00:01")
SendKeys "{ENTER}"
End Sub
答案 0 :(得分:1)
您无法在代码中禁止显示该消息,这是用户工作站上的设置,以防止恶意文件受到损害。
用户必须编辑其Windows注册表或通过组策略设置对其进行控制。 http://support.microsoft.com/kb/948615
我在服务器上生成的Excel文档遇到了同样的问题。我做的唯一解决方法是使用Open XML SDK创建文件。
编辑:我再次阅读了您的问题并注意到它更专注于第一个弹出窗口,而JMax链接的答案(How to disable file download popup in Internet Explorer?)应该解决这个问题。
答案 1 :(得分:0)
如果您拥有对PC的管理访问权限,那么JMax建议将对其进行排序。如果您是管理员,除非您知道自己在做什么,否则我不鼓励编辑注册表。
如果是办公室电脑,那么编辑注册表甚至都不是一个选择。您必须联系IT部门。他们可以作为管理员登录您的电脑,然后关闭该选项,或者他们可以调整GP作为zeroef建议。我最好的猜测是,如果它是办公室电脑,那么他们将以管理员身份登录并单独为您进行更改,而不是在GP中进行更改(除非您是该组的唯一成员)。在企业环境中,很难通过GP实现这一目标,因为它会影响很多用户。如果您的请求是Office PC,则可能无法就您的请求达成一致。
顺便说一句,从我看到的,你的问题与Excel问题无关:)HTH
西特
答案 2 :(得分:0)
你可以直接下载文件......
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
Sub DownloadFile(sURL, sSaveAs)
Dim rv As Long
rv = URLDownloadToFile(0, sURL, sSaveAs, 0, 0)
If rv <> 0 Then
MsgBox "Error with download!"
End If
End Sub
不知道https是否会成为问题。
要尝试的另一件事是:
Workbooks.Open "https://companysite.com/directorypage/Reports/MyReport.aspx?Format=Excel"