Добрый день. У меня есть несколько документов со сводными таблицами из кубов OLAP. Возможно ли каким-то образом обновить сразу все сводные во всех документах, чтобы не открывать каждый отдельно?
Добрый день. У меня есть несколько документов со сводными таблицами из кубов OLAP. Возможно ли каким-то образом обновить сразу все сводные во всех документах, чтобы не открывать каждый отдельно?ex
Макрос обновляет сводные во всех файлах с расширением "xlsx" в выбранной папке. Если в файлах кроме сводных есть что-то другое, что может обновляться, оно тоже обновляется. Если это будет замедлять работу макроса, то можно изменить макрос, чтобы макрос обновлял только сводные. Вложенные папки не просматриваются, а просматриваются файлы только в выбранной папке.
[vba]
Код
Sub Обновить_сводные()
Dim strFolder As String, bk As Workbook Dim strFileName As String
Application.ScreenUpdating = False With Application.FileDialog(msoFileDialogFolderPicker) If .Show = 0 Then Exit Sub End If strFolder = .SelectedItems(1) End With
strFileName = Dir(strFolder & "\*.xlsx") Do While strFileName <> "" Set bk = Workbooks.Open(strFolder & "\" & strFileName) bk.RefreshAll bk.Close SaveChanges:=True strFileName = Dir Loop Application.ScreenUpdating = True
MsgBox "Готово.", vbInformation
End Sub
[/vba]
Макрос обновляет сводные во всех файлах с расширением "xlsx" в выбранной папке. Если в файлах кроме сводных есть что-то другое, что может обновляться, оно тоже обновляется. Если это будет замедлять работу макроса, то можно изменить макрос, чтобы макрос обновлял только сводные. Вложенные папки не просматриваются, а просматриваются файлы только в выбранной папке.
[vba]
Код
Sub Обновить_сводные()
Dim strFolder As String, bk As Workbook Dim strFileName As String
Application.ScreenUpdating = False With Application.FileDialog(msoFileDialogFolderPicker) If .Show = 0 Then Exit Sub End If strFolder = .SelectedItems(1) End With
strFileName = Dir(strFolder & "\*.xlsx") Do While strFileName <> "" Set bk = Workbooks.Open(strFolder & "\" & strFileName) bk.RefreshAll bk.Close SaveChanges:=True strFileName = Dir Loop Application.ScreenUpdating = True
Karataev, спасибо огромное! Мой опыт в работе с макросами очень скромен, поэтому подскажите ещё, пожалуйста, как мне нужно запустить Ваш макрос, чтобы он отработал во всех файлах папки?
Karataev, спасибо огромное! Мой опыт в работе с макросами очень скромен, поэтому подскажите ещё, пожалуйста, как мне нужно запустить Ваш макрос, чтобы он отработал во всех файлах папки?ex
Просто запускайте макрос - выберите папку, в которой файлы, и ждите, когда появится сообщение "Готово". Как запускать макрос, посмотрите в гугле, если не найдете, то поищите на форуме, если и здесь не найдете, то создайте тему.
Просто запускайте макрос - выберите папку, в которой файлы, и ждите, когда появится сообщение "Готово". Как запускать макрос, посмотрите в гугле, если не найдете, то поищите на форуме, если и здесь не найдете, то создайте тему.Karataev