更新:它似乎需要一个.Click事件,但无法确定与现有代码一起使用的正确语法.
原创帖子: 我试图修改现有的堆栈溢出答案代码来解决我的问题(以及其他一些Excel论坛的答案),但没有得到相同的解决方案.如有任何帮助,我们将不胜感激.
我正在try 下载谷歌公共驱动器地址上的公共文件.我既不是doctor 的所有者,也不是驱动器的所有者.
我曾try 使用多个文件扩展名,但当我使用html时,我注意到它只接受头文件,而不是"容器".
我试图抓住任何格式的文件(docx,pdf,txt,csv)
公共文件:
或
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