Скачивайте файлы по разным путям - PullRequest
0 голосов
/ 22 апреля 2020

Пожалуйста, помогите. У меня есть код, который имеет дело

  1. Перейдите к inte rnet explorer, используя URL-адрес, указанный на листе. - Столбец
  2. Присвойте имя файлу, используя имена, указанные на листе. - Столбец B
  3. Это позволит сохранить загруженный файл в указанном c пути к папке, указанной в листе Excel. - C колонка

У меня есть макрос, который может делать все, но я изо всех сил пытаюсь работать над третьим шагом. Не могли бы вы помочь мне в этом?

МОЙ вопрос : Я хочу загрузить файлы в папку Speci c, которая постоянно меняется. Пример: некоторые файлы AB C должны загружаться в папку XYZ. Некоторые файлы CDE должны загружаться в папку 123. Уже создано несколько папок с разными именами ... Это означает, что мне нужно динамически изменять путь к папке в соответствии с моими потребностями.

Вот макрос VBA, который у меня есть для справки:

#If VBA7 And Win64 Then
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal 
pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As LongPtr, 
ByVal lpfnCB As LongPtr) As Long
#Else
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
#End If
Dim Ret As LongPtr

Sub DownloadFile()
pth = "C:\VBA\"
For Each link In ActiveSheet.Hyperlinks
fname = Split(link.Address, "/")(UBound(Split(link.Address, "/")))
    Filename = pth & fname
    URLDownloadToFile 0, link.Address, Filename, 0, 0
Next link
End 
End Sub

Спасибо ...

1 Ответ

2 голосов
/ 22 апреля 2020

Вот ваш код вопроса, измененный для достижения желаемого результата.

Предполагается, что вы вводите значения в таблицу.

Sub DownloadFile()

Dim Pth as String
Dim Link As Variant
Dim fname As String

For Each Link In ActiveSheet.Hyperlinks
fname = Split(Link.Address, "/")(UBound(Split(Link.Address, "/")))
    Pth = "C:\VBA\" & Link.Parent.Offset(0, 3).Value & "\"    'Finds the value of the cell 3 columns to the right of the hyperlink

    'The next 3 lines will create the path you specified in your "pth" variable _
    ' or ignore the error if it already exists - this will ensure you don't get errors _
    ' when saving the file to your folder (incase it hasn't been created for example).
    On Error Resume Next
        MkDir (Pth)
    On Error GoTo 0

    Filename = Pth & fname
    URLDownloadToFile 0, Link.Address, Filename, 0, 0
Next Link
End
End Sub

Чтобы прояснить изменения для будущих читателей;

Назначение Pth как Pth = "C:\VBA\" & Link.Parent.Offset(0, 3).Value & "\" в For...Next l oop позволяет нам динамически выбирать папку на основе значения Column D. Link.Parent.Offset(0, 3).Value находит значение столбцов Ячейка 3 справа от ячейки, в которой находится гиперссылка - в этом случае гиперссылки находятся в Column A, а имя папки - в Column D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...