Мне поручено загрузить сотни PDF-файлов, которые связаны через гиперссылку в гигантском файле Excel. На данный момент я нажимаю гиперссылку, которая открывает файл в Adobe Reader в Internet Explorer, и сохраняю файл в папку на моем компьютере. Есть ли способ щелкнуть гиперссылку в Excel и «сохранить как» вместо того, чтобы проходить через утомительный процесс открытия и сохранения каждого файла PDF, один за другим? Я извиняюсь, если этот вопрос кажется немного глупым или расплывчатым, я совсем не разбираюсь в технологиях!
1 ответ
2
Я отвезу тебя туда. Недостаточно информации, чтобы сделать все это, но было бы легко найти остальные.
Это использует код VBA, чтобы сделать то, что вы просили.
Ниже приведен код vbaexpress, написанный 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