День добрый. Есть необходимость обновлять однотипные запросы в перечне файлов находящихся в одной папке (в этой папке собираются данные по годам из исходников. Каждый файл делает выборку по своему году, сделано это из-за того что накопительно очень большой массив исходной информации и обновление каждый месяц через прокрутку всего массива долгое).
(Добавляется параметр по которому в запросах идёт отбор и нужно добавить исторические данные в массив получаемого запроса)
Написал код, при проверке через пошаговое выполнение запрос обновляется во всех книгах.
При привязке данного кода в кнопке или выполнение его через список книги открываются и закрываются с сохранением но без обновления запроса.
Что не так?
Код
Sub Обновить_иторию()
Dim sFolder As String, sFiles As String, wb As Workbook
'отключаем обновление экрана, чтобы наши действия не мелькали
Application.ScreenUpdating = False
'отключаю появление всплывающего окна
Application.DisplayAlerts = False
sFolder = "ТУТ прописан адрес конкретной папки"
sFiles = Dir(sFolder & "*.xlsx*")
Do While sFiles <> ""
'открываем книгу
Set wb = Workbooks.Open(sFolder & sFiles)
Dim Connection As WorkbookConnection
For Each Connection In wb.Connections
If Connection.Name = "Запрос — фин" Then
Connection.Refresh
End If
Next Connection
wb.Close True
sFiles = Dir
Loop
'возвращаем ранее отключенное обновление экрана
Application.DisplayAlerts = True
Application.ScreenUpdating = True
В данном случае при открытой книге1 формула работает корректно, при закрытой книге ошибка #ССЫЛКА! Вторая часть диапазона динамическая ПОИСКПОЗ(ЗНАЧЕН(ЛЕВСИМВ(AL6;4)+2) стоит сейчас для примера. Ячейка AL6 содержит текст 2025+ (то есть нужно просуммировать исходную информацию с 2025 года и до определённого года, который может меняться в зависимости от различных условий) Если я делаю ПОИСКПОЗ(ЗНАЧЕН(ЛЕВСИМВ(AL6;4)+1) то формула понимает итоговый диапазон даже при закрытой книге как 2 смежных ячейки. Как только диапазон начинает расширяться далее направо по строке, то формула при закрытой книге перестаёт его воспринимать как единое целое.
Как можно ещё просуммировать динамический диапазон, что бы это работало при закрытых книгах исходниках или что нужно изменить в текущей версии формулы? Пробовал "суммесли", "смещ", но они не понимают даже единичную ячейку при закрытой книге исходнике.
Доброго времени суток Помогите с гиперссылками. Макрос меняет параметры для формирования данных для графика. Потом копирует полученный лист, переименовывает из от 1 до нужного кол-ва И в итоге мне нужно в первом столбце таблицы с исходными данными на листе Инвентаризация поставил гиперссылку на этот лист. В примере ниже гиперссылка создаётся но не работает
Код
Sub графики()
Dim r, i, inv As Integer
Application.ScreenUpdating = False
With Sheets("Инвентаризация")
.Activate
.Range("C3").End(xlDown).Select
r = ActiveCell.Row
End With
For i = 3 To r
Sheets("График").Select
Cells(7, 2).Select
ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C4"
Cells(8, 2).Select
ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C5"
Cells(9, 2).Select
ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C6"
Range(Cells(5, 2), Cells(5, 25)).Select
Selection.ClearContents
Cells(10, 1).Select
ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C9"
Cells(10, 2).Select
ActiveCell.FormulaR1C1 = "=MATCH(R10C1,R1C2:R1C25,1)"
inv = Cells(10, 2).Value
Cells(5, inv + 1).Select
ActiveCell.FormulaR1C1 = "=MAX(R4C2:R4C25)*1.05"
Sheets("График").Copy After:=Sheets(i)
Sheets("График (2)").Select
Sheets("График (2)").Name = i - 2
ActiveSheet.Rows("1:10").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Range("A1").Select
Application.CutCopyMode = False
Sheets("Инвентаризация").Activate
ActiveSheet.Cells(i, 1).Select
ActiveCell.Value = i - 2
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'Лист" & i - 2 & "'!A1"
Next i
Application.ScreenUpdating = True
End Sub
Программа предусматривает перебор листов, номер листа записывается в параметр Sh Каким образом преобразовать текст формулы, что бы ссылка на лист была переменной?