2013-02-03 52 views
2

可能重复:
GET pictures from a url and then rename the picture如何下载文件夹中列A中的所有链接?

我有超过30多种文件的链接我需要下载。 有没有办法做到这一点excel?

我想在Excel中做,因为要获得这些30+链接,我必须做一些清理工作,我在Excel中做。

我需要每天都这样做。如果在Excel中有办法做到这一点真棒。

例如,如果A2是图像,然后下载此图片到文件夹

https://www.google.com/images/srpr/logo3w.png 

如果有办法重新命名logo3w.png到无论是在B2会更加真棒,所以我不会有重命名文件。

下面的脚本,我在网上找到,它的工作原理,但我需要重新命名它的帮助。
在列A2:下来,我有所有的链接
在列B2:下来,我有文件名以扩展

常量TargetFolder = “C:\ TEMP \”

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 Test() 
For Each Hyperlink In ActiveSheet.Hyperlinks 
    For N = Len(Hyperlink.Address) To 1 Step -1 
     If Mid(Hyperlink.Address, N, 1) <> "/" Then 
      LocalFileName = Mid(Hyperlink.Address, N, 1) & LocalFileName 
     Else 
      Exit For 
     End If 
    Next N 
    Call HTTPDownloadFile(Hyperlink.Address, TargetFolder & LocalFileName) 
Next Hyperlink 
End Sub 


Sub HTTPDownloadFile(ByVal URL As String, ByVal LocalFileName As String) 
Dim Res As Long 
On Error Resume Next 
Kill LocalFileName 
On Error GoTo 0 
Res = URLDownloadToFile(0&, URL, LocalFileName, 0&, 0&) 
End Sub 
+0

在标记为重复的人员身上,该另一个帖子是备用解决方案,而不是我发布的代码的解决方案。 – Mowgli

回答

1

我敢肯定您可以稍微修改以下代码以满足您的需求:

Sub DownloadCSV() 

Dim myURL As String 
myURL = "http://pic.dhe.ibm.com/infocenter/tivihelp/v41r1/topic/com.ibm.ismsaas.doc/reference/LicenseImportSample.csv" 

Dim WinHTTPReq As Object 
Set WinHTTPReq = CreateObject("Microsoft.XMLHTTP") 
Call WinHTTPReq.Open("GET", myURL, False) 
WinHTTPReq.send 

If WinHTTPReq.Status = 200 Then 
    Set oStream = CreateObject("ADODB.Stream") 
    oStream.Open 
    oStream.Type = 1 
    oStream.Write WinHTTPReq.responseBody 
    oStream.SaveToFile ("D:\DOCUMENTS\timelog.csv") 
    oStream.Close 
End If 

End Sub 

祝您好运!

+0

嗨,彼得,:)这一个是我个人的东西。所以你有myurl的地方,我可以把txt文件和链接放在里面? – Mowgli

+0

@Mowgli当然!尝试使用任何有效的网址SO标识:http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png'.SaveToFile' - 这里指定本地文件名。 –

+0

非常感谢。我将不得不编辑脚本位:) – Mowgli

0

这应该适合你。它将下载并重命名B列中的文件名。我用一行代替第二个for循环。 Hyperlink.range.row给出超链接所在的行号。因此,单元格(hyperlink.range.row,2)评估为单元格(1,2),单元格(2,2)等(如果数据在A1,A2,A3 ...中)。假设你在B列中有扩展名(ex - xyz.png),这应该起作用。

Const TargetFolder = "C:\Temp\" 
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 Test() 
    For Each Hyperlink In ActiveSheet.Hyperlinks 
     LocalFileName=ActiveSheet.cells(hyperlink.Range.Row,2).value 
     Call HTTPDownloadFile(Hyperlink.Address, TargetFolder & LocalFileName) 
    Next Hyperlink 
End Sub 


Sub HTTPDownloadFile(ByVal URL As String, ByVal LocalFileName As String) 
    Dim Res As Long 
    On Error Resume Next 
    Kill LocalFileName 
    On Error GoTo 0 
    Res = URLDownloadToFile(0&, URL, LocalFileName, 0&, 0&) 
End Sub 

让我知道这是否有帮助。

相关问题