Страницы: 1
RSS
Команда "Обновить всё" во всех файлах с выбором папки, Команда "Обновить всё" во всех файлах с выбором папки
 
Добрый день.
Есть макрос, который выполняет команду "Обновить всё" во всех файлах указанной папки.
Код
Sub OtkritVseKnigi()
'Шаг 1:Объявляем переменные
Dim MyFiles As String

'Шаг 2: Укажите нужную папку
MyFiles = Dir("C:\temp\*.xlx*")
Do While MyFiles <> ""

'Шаг 3: Открываем файлы один за другим
Workbooks.Open "C:\temp\" & MyFiles

'Код макроса с действиями
ActiveWorkbook.RefreshAll
ActiveWorkbook.Close SaveChanges:=True

'Шаг 4: Следующий файл в папке
MyFiles = Dir
Loop
End Sub
Подскажите, пожалуйста, как этот макрос изменить, чтобы папка выбиралась при запуске макроса и файлы обновлялись в фоне.

Заранее спасибо.
Изменено: Viper25 - 17.04.2022 11:22:40
 
Нашел такой блок для выбора папки.
Но как прикрутить его к макросу не знаю.
Код
Function ShowFolderDialog() As String
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выбрать папку с отчетами" '"заголовок окна диалога
        .ButtonName = "Выбрать папку"
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .InitialFileName = "C:\Temp\" '"назначаем первую папку отображения
        .InitialView = msoFileDialogViewLargeIcons 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Function 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        x = .SelectedItems(1) 'считываем путь к папке
        ShowFolderDialog = x
    End With
End Function
 
Viper25, замените "C:\temp" на переменную, которой присвойте результат функции ShowFolderDialog + проверку, если нажали отмену.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Если честно, для меня это дремучий лес. :(
Можно ли сделать, чтобы файлы обновлялись в фоне?
Изменено: Viper25 - 17.04.2022 16:57:43
 
Код
Sub OtkritVseKnigi()
    Dim MyFiles As String, sFolder As String
 
    sFolder = ShowFolderDialog() & Application.PathSeparator
    MyFiles = Dir(sFolder & "*.xls*")
    Application.ScreenUpdating = False
    Do While MyFiles <> ""
        Workbooks.Open sFolder & MyFiles
        ActiveWorkbook.RefreshAll
        ActiveWorkbook.Close SaveChanges:=True
        MyFiles = Dir
    Loop
    Application.ScreenUpdating = True
    MsgBox "Файлы обновлены!", vbInformation, "Конец"
End Sub

Function ShowFolderDialog() As String
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
    With oFD 'используем короткое обращение к объекту
        'так же можно без oFD
        'With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выбрать папку с отчетами" '"заголовок окна диалога
        .ButtonName = "Выбрать папку"
        .Filters.Clear 'очищаем установленные ранее типы файлов
        '.InitialFileName = "C:\Temp\" 'назначаем первую папку отображения
        .InitialView = msoFileDialogViewLargeIcons 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Function 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        x = .SelectedItems(1) 'считываем путь к папке
        ShowFolderDialog = x
    End With
End Function
 
New, спасибо.
Страницы: 1
Наверх