Прежде всего, я признаю, что почти ничего не знаю о написании макросов в excel. Мне удалось создать макрос ниже, связав другие макросы с другими сообщениями.Определение диапазона макросов excel с применяемым фильтром
Макрос ниже работает, но мне нужно это, чтобы сделать еще одну вещь, и я не могу понять это.
В основном, что делает макрос, пользователь может выбрать местоположение папки, а затем пройти через столбец и забрать ссылку, содержащуюся в каждой строке этого столбца, а затем сохранить файл на другом конце этой ссылки для путь к папке выбран с определенным форматом именования.
Единственный бит, который я не могу понять, - это когда я применяю фильтр к форме excel, он все равно будет захватывать все файлы независимо от того, видны они или нет.
Текущий макрос:
*Private Declare PtrSafe 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
Sub Button1_Click()
Dim intranetLink As String
Dim mainBook As Workbook
Dim Counter As Integer
Dim saveDialog As FileDialog
Dim savePath As String
Dim filename As String
Counter = 4
Set saveDialog = Application.FileDialog(msoFileDialogFolderPicker)
With saveDialog
.Title = "Select a Folder" 'sticks a title on the dialog so the user kind of knows what they're supposed to be doing
.AllowMultiSelect = False 'prevents the user from selecting more than one item out the dialog.
.InitialFileName = strPath '
If .Show <> -1 Then GoTo FolderBombed 'if the user does something funky or cancels, abort the rest of the macro.
savePath = .SelectedItems(1) 'get the file path to the selected folder
End With
For Each vCell In Range("J4:J" & Cells(Rows.Count, "J").End(xlUp).Row)
intranetLink = vCell.Text
filename = Cells(Counter, 6)
filename = "c:\Path\" + filename
URLDownloadToFile 0, intranetLink, filename, 0, 0
Counter = Counter + 1
Next vCell
FolderBombed:
MsgBox ("Completed")
End Sub*
Линия Мне нужно изменить это следующий:
For Each vCell In Range("J4:J" & Cells(Rows.Count, "J").End(xlUp).Row)
Я попытался изменить его на что-то вроде этого:
For Each vCell In Range("J4:J" & Cells(Rows.Count, "J").CurrentRegion.SpecialCells(xlVisible).End(xlUp).Row).
но все это - это выбор файла, который отфильтровывается из диапазона.
Любая помощь в получении этого права будет принята с благодарностью.
Chris.