2013-02-03 76 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 

讓我知道這是否有幫助。

相關問題