
Ich muss Hunderte von PDFs herunterladen, die über Hyperlinks in einer riesigen Excel-Datei verknüpft sind. Derzeit klicke ich auf den Hyperlink, wodurch die Datei im Adobe Reader im Internet Explorer geöffnet und in einem Ordner auf meinem Computer gespeichert wird. Gibt es eine Möglichkeit, in Excel auf den Hyperlink zu klicken und „Speichern unter“ auszuwählen, anstatt den mühsamen Vorgang des Öffnens und Speicherns jeder PDF-Datei einzeln durchzuführen? Ich entschuldige mich, wenn diese Frage etwas dumm oder vage erscheint, ich bin überhaupt nicht technisch versiert!
Antwort1
Ich werde Ihnen dabei helfen, einen Teil des Weges zu finden. Es gibt nicht genügend Informationen, um alles zu erledigen, aber den Rest könnte man leicht nachschlagen.
Dabei wird VBA-Code verwendet, um das von Ihnen Angeforderte auszuführen.
Unten ist Code vonvbaexpressgeschrieben von Mvidas. Es nimmt eine Internetadresse und speichert sie in einer lokalen Datei.
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
Ein Makro zum Testen
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
Mit dieser Funktion müssen Sie eine Schleife einrichten und die Adresse von Ihren Hyperlinks abrufen
Sie müssten eine Schleife einrichten, um durch Ihre Zellen zu gehen, die Hyperlink-Adresse abzurufen und die Funktion auszuführen
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