URLDownloadToFile据说可行,但文件已损坏或不正确

时间:2015-10-19 18:22:32

标签: excel-vba download vba excel

我已成功使用URLDownloadToFile功能超过一年,但最近它刚刚停止工作(或网络上的某些功能)。

相关代码行: <div> <img src="http://mccanney.net/mbhb/images/product-lg-hippo.jpg" class="product1" /> </div>

尝试打开时,我收到以下消息:

  

Excel无法打开文件'wkbk.xlsm',因为文件格式或文件扩展名无效。验证文件是否已损坏,以及文件扩展名是否与文件格式匹配。

当我在文本编辑器中打开文件时,我发现它确实是HTML: 出于安全原因,我已将域名和success = URLDownloadToFile(0, URL, Target, 0, 0)的路径标记为     

window.location...

但问题是,当我将文件的URL放入浏览器时,它会像往常一样自动下载,所以URL是正确的,如果我运行这个<script src="/edms/scripts/JRETest.js"></script> <script> function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = cname + "=" + cvalue + "; " + expires + ";domain=***;path=/"; } if (JRETest.versionCheck('1.8+')) { setCookie("JRECookie", "1.7", 5); } else if (JRETest.versionCheck('1.7+')) { setCookie("JRECookie", "1.7", 5); } else if (JRETest.versionCheck('1.6+')) { setCookie("JRECookie", "1.6", 5); } else { setCookie("JRECookie", "1.6", 5); } window.location = "<link that I passed to URLDownloadToFile>"; </script> </html> 函数,它返回GetURLStatus

200 - OK

就像我说的,这一切都有效,所以我不知道内部脚本是否发生变化,或者是否可能与我们的内部文档系统有关,如果还有其他任何方式我可以调用URLDownloadToFile来等待一段时间位置发生变化,或者真正发生了什么。

2 个答案:

答案 0 :(得分:1)

我知道在启用了使用条件页面或某些跟踪的网站上的类似行为。也许您的一位管理员在过去几天开始使用您的公司代理。

打开浏览器的开发人员工具(通常是F12键引导您),并在浏览器中打开一个不再有效的URL时启动网络跟踪。

我相信您会看到一些浏览器可以处理的重定向,但不会显示您的下载脚本。 尝试使用脚本的最后一个重定向URL,如果在第一次调用期间没有创建任何会话密钥或其他内容,这应该有效。 另一种方法是让你的脚本对重定向作出反应。

答案 1 :(得分:0)

这可能是缓存问题。我对“URLDownloadToFile”的体验是我需要先调用“DeleteUrlCacheEntry(downLoadURL)”来确保缓存没有弄乱我的测试。