Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt MyMacros.xlsm.txt
(15.9 Kb, 21 просмотров)

Я понимаю задачу так: имеем рабочую книгу, например, MyMacros.xlsm, содержащую макрос(ы) для обработки файлов, например, вида FIC_дд.мм.гггг.xlsx. То есть, макрос(ы) хранятся в отдельной книге, обрабатывают другие книги указанного вида.
Вот пример двух макросов.
Код: Выделить весь код
Sub MyMacros()

FileInPref = "Z:\Box_In\FIC_"
BoxOut = "Z:\Box_Out"

' Обрабатываем файл текущего дня "FIC_дд.мм.гггг.xlsx"

FileIn = FileInPref + Mid(Now, 1, 10) + ".xlsx"
Workbooks.Open Filename:=FileIn
    
Call Processing   'Процедура для обработки открытой таблицы

ActiveWorkbook.Save
ActiveWorkbook.Close

With CreateObject("Scripting.FileSystemObject")
    .CopyFile FileIn, BoxOut + "\" + .GetFileName(FileIn), True
End With

End Sub

Sub MyDial()

FileInPref = "Z:\Box_In\FIC_"
BoxOut = "Z:\Box_Out"

' Выбираем для обработки файл из "Префикс_дд.мм.гггг.xlsx"

With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = FileInPref + "*.xlsx"
    .InitialView = msoFileDialogViewList
    .AllowMultiSelect = False

    fileChosen = .Show
    If fileChosen = -1 Then
        FileIn = .SelectedItems(1)
        Workbooks.Open Filename:=FileIn
        
        Call Processing   'Процедура для обработки открытой таблицы

        ActiveWorkbook.Save
        ActiveWorkbook.Close

        With CreateObject("Scripting.FileSystemObject")
            .CopyFile FileIn, BoxOut + "\" + .GetFileName(FileIn), True
        End With
    Else
        MsgBox "Файл не выбран"
    End If
End With

End Sub

Sub Processing()
        ' ==== Просто пример обработки исходного активного листа книги =========
            Columns("C:C").NumberFormat = "0.00"
        ' ==== Конец примера обработки исходного файла =========
End Sub
Оба макроса в принципе очень похожи.

MyMacros обрабатывает файл текущего дня,
MyDial позволяет выбрать файл для обработки.

FileInPref = "Z:\Box_In\FIC_" - путь и префикс исходных файлов
BoxOut = "Z:\Box_Out" - папка для записи копии обработанного файла

Обработку Вашей рабочей книги лучше выделить в отдельную процедуру, я это сделал как пример в процедуре Processing

Прикрепляю пример книги с макросами. Уберите расширение .txt

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 19-11-2020 в 20:48.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:35, 19-11-2020 | #3