
Tengo la tarea de descargar cientos de archivos PDF vinculados mediante un hipervínculo en un archivo de Excel gigante. A partir de ahora, hago clic en el hipervínculo que abre el archivo en Adobe Reader en Internet Explorer y guardo el archivo en una carpeta de mi computadora. ¿Hay alguna manera de hacer clic en el hipervínculo dentro de Excel y "guardar como", en lugar de pasar por el tedioso proceso de abrir y guardar cada pdf, uno por uno? Pido disculpas si esta pregunta parece un poco estúpida o vaga, ¡no soy un experto en tecnología en absoluto!
Respuesta1
Te llevaré a mitad del camino. No hay suficiente información para hacerlo todo, pero sería fácil buscar el resto.
Esto utiliza código vba para hacer lo que usted solicitó.
A continuación se muestra el código devbaexpressescrito por Mvidas. Toma una dirección de Internet y la guarda en un archivo local.
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
Una macro para probarlo
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
Con esta función necesitas configurar un bucle y obtener la dirección de tus hipervínculos.
Necesitaría configurar un bucle para recorrer sus celdas, obtener la dirección del hipervínculo y ejecutar la función.
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