更新:它似乎需要一个.Click事件,但无法确定与现有代码一起使用的正确语法.

原创帖子: 我试图修改现有的堆栈溢出答案代码来解决我的问题(以及其他一些Excel论坛的答案),但没有得到相同的解决方案.如有任何帮助,我们将不胜感激.

我正在try 下载谷歌公共驱动器地址上的公共文件.我既不是doctor 的所有者,也不是驱动器的所有者.

我曾try 使用多个文件扩展名,但当我使用html时,我注意到它只接受头文件,而不是"容器".

我试图抓住任何格式的文件(docx,pdf,txt,csv)

公共文件:

https://docs.google.com/document/d/1RaIps4g70ZWalb2UkLticEHM0OGcZF6h/edit?usp=sharing&ouid=111533769991350336043&rtpof=true&sd=true

https://docs.google.com/document/d/1RaIps4g70ZWalb2UkLticEHM0OGcZF6h/edit

   Sub downloadFile()

      Const FOLDER = "C:\temp\"
    
      Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
      Dim wb As W或kbook: Set wb = ThisW或kbook
      Dim ws As W或ksheet: Set ws = wb.Sheets(1)
    
      If Not (fso.FolderExists(FOLDER)) Then MkDir FOLDER
    
      Dim oWinHttp As Object: Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
      Dim oStream As Object: Set oStream = CreateObject("ADODB.Stream")
    
      Dim URL As String: URL = ws.Cells(2, 1).Value
      Dim ext As String: ext = ".docx"
    
      ' check folder exists
      If Not fso.FolderExists(FOLDER) Then
         MkDir FOLDER
      End If

        oWinHttp.Open "GET", URL, False
        oWinHttp.Send
        If oWinHttp.Status = 200 Then

            With oStream
                .Open
                .Type = 1
                .Write oWinHttp.ResponseBody
                .SaveToFile FOLDER & "File " & ext, 2 ' 1 = no overwrite, 2 = overwrite
                .Close
            End With

            Else
                MsgBox URL, vbExclamation, "Status " & oWinHttp.Status
        End If
    
      MsgBox "File created", vbInf或mation

   End Sub

推荐答案

对于一个更简单的替代方案,VBS可以使用sendkey,它是第二好的机器人浏览器方法,比如 puppeteer 操纵者,但通常简单就足够快,可以进行调整.

要求Edge(或Chrome等)自动下载到固定文件夹(这里是"下载"),因为在这种情况下, Select "另存为"会产生不必要的混淆.

从CMD行或通过VBAshell 命令&;Trigger VBScrip启动浏览器.

enter image description here

"%programfiles%\Microsoft\Edge\Application\msedge.exe" --app=https://docs.google.com/document/d/1RaIps4g70ZWalb2UkLticEHM0OGcZF6h/edit
echo running script
timeout 8 && cscript savefiles.vbs

savefiles.vbs

' Edge is already open waiting for commands
 ' It is important that saving is to a fixed directory
 ' not open the "Where to save" dialog

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep(100)

' we need to use the app name  which is the TitleBar name
WshShell.AppActivate("01-1-2024 MONTHLY PRICE INDICES FOR ASPHALT CEMENT FOR ASPHALT CEMENT.docx")

' Type in ALT F to trigger File Menu actions set time gaps as required 1000=1second
WshShell.SendKeys "%F"
WScript.Sleep(100)
WshShell.SendKeys "%D"
WScript.Sleep(100)
WshShell.SendKeys "x"
WScript.Sleep(8000)
WshShell.SendKeys "{ENTER}"
WScript.Sleep(100)
WshShell.SendKeys "{ESC}"
' Add more user specific key ins e.g Opendocs
WshShell.SendKeys "%F"
WScript.Sleep(100)
WshShell.SendKeys "%D"
WScript.Sleep(100)
WshShell.SendKeys "o"
WScript.Sleep(8000)
WshShell.SendKeys "{ENTER}"
WScript.Sleep(100)
WshShell.SendKeys "{ESC}"

Html相关问答推荐

<;img>;和具有负边距的元素的堆叠顺序

浏览器是在调整大小还是在全屏上交换视频源?

垂直页眉,每行只显示一个使用css的字母

HTML+CSS+JS动态选中文本高亮 colored颜色 变化

使用无限数量的元素创建特定的CSS网格

为什么前端框架可以创建自定义属性,而我却被期望在挖掘之前添加数据

如何将CSS滤镜仅应用于背景图像

现代网络浏览器可以并行下载哪些类型的网络资源?还有,什么东西不能并行下载?

SVG动画只有在打开S开发工具的浏览器时才开始播放

更改Angular 为17的material Select 字段的高度?

不呈现孙子元素,使用R htmlTools::Taglist为分页的pdf生成HTML

R 中的网页抓取数字?

如何影响 HTML 元素的哪些子元素导致其增长,哪些不增长?

在 flexbox 中使用 spacer 是否有效

在Firefox中使用keySplines时,SVG: <animateMotion>不起作用

白色栏超出页面100%的右侧

使用图像自定义 CSS 网格边框

如何使用 CSS Flex 设计一个导航栏,其中一组项目左对齐而另一组项目右对齐?

如何在不删除

标记的情况下加入 HTML 中的段落

使用 CSS 的发光边框动画没有流畅的过渡