
巨大な Excel ファイル内のハイパーリンクでリンクされている何百もの PDF をダウンロードするタスクがあります。現在、ハイパーリンクをクリックすると、Internet Explorer の Adobe Reader でファイルが開き、コンピューターのフォルダーにファイルが保存されます。各 PDF を 1 つずつ開いて保存するという面倒な手順を実行する代わりに、Excel 内のハイパーリンクをクリックして「名前を付けて保存」する方法はありますか? この質問が少し馬鹿げていたり、漠然としていたりする場合は申し訳ありません。私は技術にまったく詳しくありません。
答え1
途中まではご案内します。すべてを行うには情報が足りませんが、残りは簡単に調べることができます。
これは、要求されたことを実行するのに VBA コードを使用します。
以下はコードですvbaエクスプレスMvidas によって作成されました。インターネット アドレスを取得して、ローカル ファイルに保存します。
Option Explicit
Function SaveWebFile(ByVal vWebFile As String, ByVal vLocalFile As String) As Boolean
Dim oXMLHTTP As Object, i As Long, vFF As Long, oResp() As Byte
'You can also set a ref. to Microsoft XML, and Dim oXMLHTTP as MSXML2.XMLHTTP
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP.Open "GET", vWebFile, False 'Open socket to get the website
oXMLHTTP.Send 'send request
'Wait for request to finish
Do While oXMLHTTP.readyState <> 4
DoEvents
Loop
oResp = oXMLHTTP.responseBody 'Returns the results as a byte array
'Create local file and save results to it
vFF = FreeFile
If Dir(vLocalFile) <> "" Then Kill vLocalFile
Open vLocalFile For Binary As #vFF
Put #vFF, , oResp
Close #vFF
'Clear memory
Set oXMLHTTP = Nothing
End Function
テストするためのマクロ
Sub TestingTheCode()
'This will save the Google logo to your hard drive, insert it into the
' active spreadsheet, then delete the local file
SaveWebFile "http://www.google.com/intl/en/images/logo.gif", "C:\GoogleLogo.gif"
ActiveSheet.Pictures.Insert "C:\GoogleLogo.gif"
Kill "C:\GoogleLogo.gif"
End Sub
この関数では、ループを設定してハイパーリンクからアドレスを取得する必要があります。
セルを巡回するためのループを設定し、ハイパーリンクアドレスを取得して関数を実行する必要があります。
For i = 1 to lastRow
cellAddress = Replace(Range("A" & i).Hyperlinks(1).Address, "mailto:", "")
'Something to get the file name from the whole file name here
SaveWebFile cellAddress, destinationFolder & filename
Next