Сохранение книги Excel с названием файла из ячейки через VBA

Имеется определенный шаблон куда записываются данные и нужно часто сохранять эту заполненную таблицу Excel в папку, например с накладными. Чтобы избежать рутину по написанию имен файла вручную, можно сделать так, чтобы файл сохранялся с именем из заполненных ячеек. 

Изначальный шаблон с ячейками, после сохранения, должен оставаться неизменным, т.е. в папку сохраняется его копия с измененными данными в ячейках. То же самое, если нажали бы "Файл" - "Сохранить как..."

01Имеем шалон, в котором я выделил красным те ячейки, которые заполнил и хочу чтобы из них формировалось новое имя для сохранения файла excel.

02После того как нажали кнопку "Сохранить накладную", заходим в папку с сохраненным файлом и смотрим его имя. Сейчас оно у меня выглядит "01 Монтаж, -Рога-Копыта-, ул. Пушкина, дом Калатушкина-17-28 - -02-"

В имени файла не могут присутствовать запрещенные символы, такие как ""/ и т.д. Поэтому применили функцию автозамены запрещенных символов в имени файла на "-"

Код VBA Excel модуль с комментариями:

Function Replace_symbols(ByVal txt As String) As String 'Убираем запрещённые в именах файлов символы!
    Dim st$, i&
    'Ковычки и слэши в данном случае!
    st$ = "/"""
    For i& = 1 To Len(st$)
    'Заменяем их на тире "-"
        txt = Replace(txt, Mid(st$, i, 1), "-")
    Next
    Replace_symbols = txt
End Function
Sub SaveMe()
    'Где будет сохраняться
    ПутьКПапке = "S:\Рабочий стол\СКЛАД\Расходные накладные по складу\2017\Январь\"
    'С какого листа берется имя для файла
    With Worksheets("Лист1")
    'Имя_для_сохранения начинается со слова в ячейке [I8]
        Имя_для_сохранения = .[I8]
    End With
    'Следующие слова в имени сохранения файла после [I8], берутся из следющих ячеек, с заменой запрещенных символов из функции Replace_symbols
    ActiveWorkbook.SaveAs ПутьКПапке & Replace_symbols([G2]) & " " & Имя_для_сохранения & ", " & Replace_symbols([D10]) & ", " & Replace_symbols([H10]) & " - " & Replace_symbols([M8]) & ".xlsm"
MsgBox "Накладная сохранена в папке расходных накладных!"
End Sub

*Названия листов, пути для сохранения, имена ячеек меняем на свои.

mr. Mak

Остались вопросы? Пишите на почту admin@hzit.ru

Администратор сайта hzit.ru
Back to top