Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 保存作为网页上超链接目标的文件_Excel_Vba_Hyperlink_Xmlhttprequest - Fatal编程技术网

Excel 保存作为网页上超链接目标的文件

Excel 保存作为网页上超链接目标的文件,excel,vba,hyperlink,xmlhttprequest,Excel,Vba,Hyperlink,Xmlhttprequest,内部网页上有多个链接,可以生成并在Excel中打开文件 与超链接关联的URL不指向文件本身。这些文件是在运行时生成的 例如: https://prodhost.company.com:45443/org/exportAdvancedSearchToXLS?f=worldRegion|worldRegion | worldRegion&v=NA | EMEA | APAC&e=%3D |%3D |%3D&qName=所有%20名全球%20名员工 我需要一种方法将超链接生成的文件保存到本地计算机,然

内部网页上有多个链接,可以生成并在Excel中打开文件

与超链接关联的URL不指向文件本身。这些文件是在运行时生成的

例如:
https://prodhost.company.com:45443/org/exportAdvancedSearchToXLS?f=worldRegion|worldRegion | worldRegion&v=NA | EMEA | APAC&e=%3D |%3D |%3D&qName=所有%20名全球%20名员工

我需要一种方法将超链接生成的文件保存到本地计算机,然后再对其执行操作。从本质上说,要自动完成右键单击超链接并选择“将目标另存为…”的操作

以下代码(由提供)将生成的文件保存到本地计算机,但当我尝试打开文件时,Excel无法识别格式并生成错误

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


我尝试将文件保存为.XLSX和.XLSB,但没有成功。

多亏了用户,只需将文件扩展名改为XLS而不是XLSX就可以了。感谢所有响应的人。

听起来.xlsx文件是在运行时生成的,您是否尝试使用`LocalFilePath=“C:\Temp`是否尝试保存为xls?您的超链接显示“将高级搜索导出到xls”是否尝试了
工作簿。打开(URLHERE)
?顺便说一句,您看到的消息可能表明下载的文件实际上不是excel格式的文件,而是带有excel内容标题的HTML表格。Office会警告您这类事情。url是私有的/登录后的吗?扎克E:我刚试过您的建议。它会导致运行时错误3004:Application defi未定义或对象定义的错误。
Sub DownloadFile()
    Dim WinHttpReq As Object
    Dim oStream As Object
    Dim myURL As String
    Dim LocalFilePath As String

    LocalFilePath = "C:\Temp\test.xlsx"

    Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
    WinHttpReq.Open "GET", gsADDRESS, False, "", ""  '("username", "password")
    WinHttpReq.send

    If WinHttpReq.Status = 200 Then
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write WinHttpReq.responseBody
        oStream.SaveToFile LocalFilePath, 2
        oStream.Close
    End If
End Sub