Друзья, нет времени автоматизировать рутинные действия в десятке файлов отчетов магазинов. Наработки есть и это работало, пока не навесил доп функционал.
Готов оплатить работу тому, кто сделает быстро и качественно - на карточку.
Мне нужно, сначала, выставить требуемый магазин:
это решается конструкцией типа:
| Код |
|---|
Sub Выбор_магазина()
'
' Выбор_магазина Макрос
'
'
Sheets("1_Планы_сотрудников_и_магазина").Select
Sheets("Выбор_магазина").Visible = True
With ActiveWorkbook.SlicerCaches("Срез_Магазин.")
.SlicerItems("Ашан").Selected = True
.SlicerItems("Billa").Selected = False
.SlicerItems("Маяк").Selected = False
.SlicerItems("Вышка").Selected = False
End With
With ActiveWorkbook.SlicerCaches("Срез_Магазин311111")
.SlicerItems("Ашан").Selected = True
.SlicerItems("Billa").Selected = False
.SlicerItems("Маяк").Selected = False
.SlicerItems("Вышка").Selected = False
End With
With ActiveWorkbook.SlicerCaches("Срез_Магазин")
.SlicerItems("Ашан").Selected = True
.SlicerItems("Billa").Selected = False
.SlicerItems("Маяк").Selected = False
.SlicerItems("Вышка").Selected = False
End With
With ActiveWorkbook.SlicerCaches("Срез_Магазин1")
.SlicerItems("Ашан").Selected = True
.SlicerItems("Billa").Selected = False
.SlicerItems("Маяк").Selected = False
.SlicerItems("Вышка").Selected = False
End With
With ActiveWorkbook.SlicerCaches("Срез_Магазин2")
.SlicerItems("Ашан").Selected = True
.SlicerItems("Billa").Selected = False
.SlicerItems("Маяк").Selected = False
.SlicerItems("Вышка").Selected = False
End With
Sheets("Выбор_магазина").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
|
Второй макрос, на более ранней стадии, открывал файл, обновлял все сводные, сохранял файл в папку OneDrive, а сам файл закрывал.
| Код |
|---|
Private Sub Workbook_Open()
Application.DisplayAlerts = False
ActiveWorkbook.RefreshAll 'обновление сводных таблиц
Application.Wait (Now + TimeValue("0:00:10"))
ActiveWorkbook.SaveAs Filename:= _
"https://pgroup-my.sharepoint.com/personal/p_pgroup_onmicrosoft_com/Documents/Ашан.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.Wait (Now + TimeValue("0:00:10"))
ActiveWorkbook.Close
|
Теперь хочу несколько изменить и объединить оба макроса в один и повесить все действия на открытие файла и его название.
1. Открыть файл.
2. Открыть скрытый лист.
3. Выставить .SlicerItems("Название_файла").Selected = True
4. Сделать паузу для обработки срезов ( видимо из-за не очень чистого метода, процесс занимает секунд 15-20)
5. Закрыть скрытый лист
6. Запустить обновление всех сводных таблиц с внешнего содержимого
7. Сделать паузу для обработки сводных
8 Сохранить файл.
9.Сохранить его копию в хранилище OneDrive. ( раньше копии не делал )
10. Закрыть файл
Напрямую, в папке OneDrive ничего корректно не работает. Файл обрабатывается в другой папке, а потом принудительно заменяет собой уже существующий файл в OneDrive.
Алексей
.