Прошу прощения, что без файла, но вопрос скорее теоретический, не требующий каких-либо расчетов.
Есть файл в котором на нескольких листах несколько десятков сводных таблиц. Источник данных для всех этих таблиц - в другом файле, и путь к нему имеет вид а-ля: F:\Папка 1\Папка 2\Папка 3\2 квартал 2016 г\[База (2 квартал).xlsm]CURRENT'!$A$1:$AD$165988
Каждый квартал приходится ручками менять вот эту часть "[База (2 квартал).xlsm" на следующий по счету (3 квартал и т.д.). В связи с этим я задался вопросом, а нельзя ли как-нибудь (возможно, через функционал диспетчера имен), указать в самом файле путь (F:\...), а в источнике данных сводных таблиц указать просто ссылку на ячейку, в которой этот путь хранится?
Заранее благодарю!
Добрый день уважаемые господа!
Прошу прощения, что без файла, но вопрос скорее теоретический, не требующий каких-либо расчетов.
Есть файл в котором на нескольких листах несколько десятков сводных таблиц. Источник данных для всех этих таблиц - в другом файле, и путь к нему имеет вид а-ля: F:\Папка 1\Папка 2\Папка 3\2 квартал 2016 г\[База (2 квартал).xlsm]CURRENT'!$A$1:$AD$165988
Каждый квартал приходится ручками менять вот эту часть "[База (2 квартал).xlsm" на следующий по счету (3 квартал и т.д.). В связи с этим я задался вопросом, а нельзя ли как-нибудь (возможно, через функционал диспетчера имен), указать в самом файле путь (F:\...), а в источнике данных сводных таблиц указать просто ссылку на ячейку, в которой этот путь хранится?
Можно что-то вот такое в модуль книги положить [vba]
Код
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable) Application.EnableEvents = 0 Application.ScreenUpdating = 0 For Each Sh In Me.Worksheets For Each Target In Sh.PivotTables n = Target.Name Sh.PivotTables(Target.Name).ChangePivotCache Me. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Sheets("Лист2").Range("D1")) Next Next Application.EnableEvents = 1 End Sub
[/vba] При обновлении любой сводной меняется путь ко всем. Путь берется из Лист2!D1. Или можно аналогично повесить на событие изменения ячейки Лист2!С1
Можно что-то вот такое в модуль книги положить [vba]
Код
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable) Application.EnableEvents = 0 Application.ScreenUpdating = 0 For Each Sh In Me.Worksheets For Each Target In Sh.PivotTables n = Target.Name Sh.PivotTables(Target.Name).ChangePivotCache Me. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Sheets("Лист2").Range("D1")) Next Next Application.EnableEvents = 1 End Sub
[/vba] При обновлении любой сводной меняется путь ко всем. Путь берется из Лист2!D1. Или можно аналогично повесить на событие изменения ячейки Лист2!С1_Boroda_