Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос Save_Copy_As - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Макрос Save_Copy_As (Сохранение копии активной книги в заданной папке)
Макрос Save_Copy_As
nikola77 Дата: Среда, 25.03.2015, 13:24 | Сообщение № 21
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
все, методом проб и ошибок получилось :)
 
Ответить
Сообщениевсе, методом проб и ошибок получилось :)

Автор - nikola77
Дата добавления - 25.03.2015 в 13:24
iopper Дата: Пятница, 06.10.2017, 15:39 | Сообщение № 22
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день! Подскажите, пожалуйста, как отредактировать, чтобы при сохранении в имени файла не было скобок, а только новый порядковый номер через пробел? Например: не "Новая книга(1)" , а "Новая книга 1".

Спасибо!

А вот то же самое, но с автонумерацией вместо проставления времени:
Sub Save_Copy_As_I()
'---------------------------------------------------------------------------------------
' Procedure    : Save_Copy_As_I
' Author       : Alex_ST
' Topic_HEADER : Сохранить копию текущего файла, запомнив папку для сохранения
' Topic_URL    : http://www.excelworld.ru/forum/3-1293-18266-16-1335949341
' DateTime     : 02.05.12, 13:02
' Purpose      : Сохранение копии активного файла с автоматическим увеличением суффикса (номера копии)
' Notes        : Путь сохранения копий хранится в коллекции .Names книги (в именованном диапазоне)
'---------------------------------------------------------------------------------------
    Const sPath_in_Names = "Path4SaveCopyAs"   ' имя элемента коллекции .Names, в котором должен храниться путь для сохранения копий файла
    Dim sDirPath$, sExp$, sMainName$, FileName, i%
    With ActiveWorkbook
        On Error Resume Next
        sDirPath = .Names(sPath_in_Names).Value   ' считать из коллекции .Names значение, ранее сохраненное под именем sPath_in_Names
        If Err Then .Names.Add sPath_in_Names, .Path & "\": sDirPath = .Path & "\"   ' если считать не удалось, значит путь ранее не задавался и он для первого раза задаётся равным ActiveWorkbook.Path
        sDirPath = Mid(sDirPath, 3, Len(sDirPath) - 3)   ' убрать из считанного значения в начале "= и в конце "
        sDirPath = sDirPath & IIf(Right(sDirPath, 1) = "\", "", "\")  ' на всякий случай (если имя было задано в ручную и при этом не верно - без слэша)
        .Names(sPath_in_Names).Value = sDirPath   ' запомнить путь сохранения копий в коллекции .Names под именем sPath_in_Names

        sExp = Right(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)   ' расширение файла вместе с точкой (например, ".xls")
        sMainName = Left(.Name, Len(.Name) - Len(sExp))
        Do
        FileName = sDirPath & sMainName & "(" & i & ")" & sExp: i = i + 1
        Loop While Dir(FileName) <> ""   ' пока имя не будет уникальным в папке
        FileName = Application.GetSaveAsFilename(InitialFileName:=FileName, _
                    FileFilter:="Excel Files (*" & sExp & "), *" & sExp & ", All Files (*.*),*.*", _
                    Title:="Сохранение копии файла")   'задать путь сохранения и имя копии файла в окне выбора
        If VarType(FileName) = vbBoolean Then Exit Sub   ' если нажали "Отмена", то FileName = False, если "Сохранить" - полный путь к файлу вместе с его именем
        sDirPath = Left(FileName, InStrRev(FileName, "\"))   ' путь к папке сохранения копий без имени файла
        .Names(sPath_in_Names).Value = sDirPath   ' запомнить выбранный в диалоге путь в коллекции .Names под именем sPath_in_Names
        .SaveCopyAs FileName
    End With
End Sub
 
Ответить
СообщениеДобрый день! Подскажите, пожалуйста, как отредактировать, чтобы при сохранении в имени файла не было скобок, а только новый порядковый номер через пробел? Например: не "Новая книга(1)" , а "Новая книга 1".

Спасибо!

А вот то же самое, но с автонумерацией вместо проставления времени:
Sub Save_Copy_As_I()
'---------------------------------------------------------------------------------------
' Procedure    : Save_Copy_As_I
' Author       : Alex_ST
' Topic_HEADER : Сохранить копию текущего файла, запомнив папку для сохранения
' Topic_URL    : http://www.excelworld.ru/forum/3-1293-18266-16-1335949341
' DateTime     : 02.05.12, 13:02
' Purpose      : Сохранение копии активного файла с автоматическим увеличением суффикса (номера копии)
' Notes        : Путь сохранения копий хранится в коллекции .Names книги (в именованном диапазоне)
'---------------------------------------------------------------------------------------
    Const sPath_in_Names = "Path4SaveCopyAs"   ' имя элемента коллекции .Names, в котором должен храниться путь для сохранения копий файла
    Dim sDirPath$, sExp$, sMainName$, FileName, i%
    With ActiveWorkbook
        On Error Resume Next
        sDirPath = .Names(sPath_in_Names).Value   ' считать из коллекции .Names значение, ранее сохраненное под именем sPath_in_Names
        If Err Then .Names.Add sPath_in_Names, .Path & "\": sDirPath = .Path & "\"   ' если считать не удалось, значит путь ранее не задавался и он для первого раза задаётся равным ActiveWorkbook.Path
        sDirPath = Mid(sDirPath, 3, Len(sDirPath) - 3)   ' убрать из считанного значения в начале "= и в конце "
        sDirPath = sDirPath & IIf(Right(sDirPath, 1) = "\", "", "\")  ' на всякий случай (если имя было задано в ручную и при этом не верно - без слэша)
        .Names(sPath_in_Names).Value = sDirPath   ' запомнить путь сохранения копий в коллекции .Names под именем sPath_in_Names

        sExp = Right(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)   ' расширение файла вместе с точкой (например, ".xls")
        sMainName = Left(.Name, Len(.Name) - Len(sExp))
        Do
        FileName = sDirPath & sMainName & "(" & i & ")" & sExp: i = i + 1
        Loop While Dir(FileName) <> ""   ' пока имя не будет уникальным в папке
        FileName = Application.GetSaveAsFilename(InitialFileName:=FileName, _
                    FileFilter:="Excel Files (*" & sExp & "), *" & sExp & ", All Files (*.*),*.*", _
                    Title:="Сохранение копии файла")   'задать путь сохранения и имя копии файла в окне выбора
        If VarType(FileName) = vbBoolean Then Exit Sub   ' если нажали "Отмена", то FileName = False, если "Сохранить" - полный путь к файлу вместе с его именем
        sDirPath = Left(FileName, InStrRev(FileName, "\"))   ' путь к папке сохранения копий без имени файла
        .Names(sPath_in_Names).Value = sDirPath   ' запомнить выбранный в диалоге путь в коллекции .Names под именем sPath_in_Names
        .SaveCopyAs FileName
    End With
End Sub

Автор - iopper
Дата добавления - 06.10.2017 в 15:39
Pelena Дата: Пятница, 06.10.2017, 17:01 | Сообщение № 23
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Строку[vba]
Код
FileName = sDirPath & sMainName & "(" & i & ")" & sExp: i = i + 1
[/vba]
замените на
[vba]
Код
FileName = sDirPath & sMainName & " " & i & sExp: i = i + 1
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Строку[vba]
Код
FileName = sDirPath & sMainName & "(" & i & ")" & sExp: i = i + 1
[/vba]
замените на
[vba]
Код
FileName = sDirPath & sMainName & " " & i & sExp: i = i + 1
[/vba]

Автор - Pelena
Дата добавления - 06.10.2017 в 17:01
Alex_ST Дата: Пятница, 06.10.2017, 23:27 | Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Тот же вопрос iopper мне почему-то задал в личке...
Я, не заглянув сначала сюда, ответил то же самое:
В цикле подбора уникального имени:
[vba]
Код
        Do
        FileName = sDirPath & sMainName & "(" & i & ")" & sExp: i = i + 1
        Loop While Dir(FileName) <> ""   ' пока имя не будет уникальным в папке
[/vba]
измените шаблон имени так:
[vba]
Код
        Do
        FileName = sDirPath & sMainName & " " & i &  sExp: i = i + 1
        Loop While Dir(FileName) <> ""   ' пока имя не будет уникальным в папке
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Пятница, 06.10.2017, 23:29
 
Ответить
СообщениеТот же вопрос iopper мне почему-то задал в личке...
Я, не заглянув сначала сюда, ответил то же самое:
В цикле подбора уникального имени:
[vba]
Код
        Do
        FileName = sDirPath & sMainName & "(" & i & ")" & sExp: i = i + 1
        Loop While Dir(FileName) <> ""   ' пока имя не будет уникальным в папке
[/vba]
измените шаблон имени так:
[vba]
Код
        Do
        FileName = sDirPath & sMainName & " " & i &  sExp: i = i + 1
        Loop While Dir(FileName) <> ""   ' пока имя не будет уникальным в папке
[/vba]

Автор - Alex_ST
Дата добавления - 06.10.2017 в 23:27
phelex Дата: Пятница, 20.10.2017, 13:46 | Сообщение № 25
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Alex_ST, привет!

Включусь в диалог, возможно ты сможешь мне помочь.
Возможно ли сделать данный макрос с ведением лога сохранения?
Т.е. при закрытии кники макрос срабатывает и сохраняет бэкап в общую папку с именем из 2х ячеек.
И в другую книгу (с фиксированным путем) записывает: Путь, Дату сохранения, И данные из нескольких ячеек.

Какая часть кода нужна?

Заранее спасибо!


С помощью Excel можно почти все, остальное можно с помощью VBA
 
Ответить
СообщениеAlex_ST, привет!

Включусь в диалог, возможно ты сможешь мне помочь.
Возможно ли сделать данный макрос с ведением лога сохранения?
Т.е. при закрытии кники макрос срабатывает и сохраняет бэкап в общую папку с именем из 2х ячеек.
И в другую книгу (с фиксированным путем) записывает: Путь, Дату сохранения, И данные из нескольких ячеек.

Какая часть кода нужна?

Заранее спасибо!

Автор - phelex
Дата добавления - 20.10.2017 в 13:46
Alex_ST Дата: Суббота, 21.10.2017, 23:07 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Сделать-то, конечно, можно, но при этом от основных "вкусных примочек" (типа сохранения пути в коллекции Names, автонумерации и т.п.), добавленных мною в макросе Save_Copy_As к абсолютно стандартному сохранению не останется ничего.
Т.е. необходима практически полная переделка макроса, в результате которой получится стандартное сохранение, обвешанное нужными Вам примочками. А в топике получится оффтоп - макрос, мало относящийся к теме топика.
Я сейчас от программирования в качестве хобби отошёл. Новые макросы не пишу. Только незначительно корректирую при необходимости свои старые.
Задавайте вопрос в основном форуме. Там народ поможет.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Суббота, 21.10.2017, 23:08
 
Ответить
СообщениеСделать-то, конечно, можно, но при этом от основных "вкусных примочек" (типа сохранения пути в коллекции Names, автонумерации и т.п.), добавленных мною в макросе Save_Copy_As к абсолютно стандартному сохранению не останется ничего.
Т.е. необходима практически полная переделка макроса, в результате которой получится стандартное сохранение, обвешанное нужными Вам примочками. А в топике получится оффтоп - макрос, мало относящийся к теме топика.
Я сейчас от программирования в качестве хобби отошёл. Новые макросы не пишу. Только незначительно корректирую при необходимости свои старые.
Задавайте вопрос в основном форуме. Там народ поможет.

Автор - Alex_ST
Дата добавления - 21.10.2017 в 23:07
phelex Дата: Воскресенье, 22.10.2017, 09:21 | Сообщение № 27
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Alex_ST, Алекс, может подскажешь один ключевой момент не в рамках хобби :)

Как сделать что бы макрос срабатывал при сохранении файла пользователем?
Я подумал нужно просто по тихому делать бекап в стороннюю папку (формат xlsx). Не спрашивая пользователя.

Мог бы с этим помочь? Спасибо


С помощью Excel можно почти все, остальное можно с помощью VBA
 
Ответить
СообщениеAlex_ST, Алекс, может подскажешь один ключевой момент не в рамках хобби :)

Как сделать что бы макрос срабатывал при сохранении файла пользователем?
Я подумал нужно просто по тихому делать бекап в стороннюю папку (формат xlsx). Не спрашивая пользователя.

Мог бы с этим помочь? Спасибо

Автор - phelex
Дата добавления - 22.10.2017 в 09:21
Pelena Дата: Воскресенье, 22.10.2017, 16:49 | Сообщение № 28
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
phelex, Ваш вопрос не относится к данной теме, а тем более к разделу Готовых решений.
Задавайте вопрос в основном форуме


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеphelex, Ваш вопрос не относится к данной теме, а тем более к разделу Готовых решений.
Задавайте вопрос в основном форуме

Автор - Pelena
Дата добавления - 22.10.2017 в 16:49
Mexo Дата: Пятница, 29.12.2017, 17:14 | Сообщение № 29
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Здравствуйте! Подскажите пожалуйста что нужно изменить в коде чтобы "бэкапился" только один активный лист из книги?
 
Ответить
СообщениеЗдравствуйте! Подскажите пожалуйста что нужно изменить в коде чтобы "бэкапился" только один активный лист из книги?

Автор - Mexo
Дата добавления - 29.12.2017 в 17:14
Mexo Дата: Пятница, 29.12.2017, 17:40 | Сообщение № 30
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Прошу прощения поторопился с вопросом. Нашел решение тут
 
Ответить
СообщениеПрошу прощения поторопился с вопросом. Нашел решение тут

Автор - Mexo
Дата добавления - 29.12.2017 в 17:40
Mexo Дата: Пятница, 29.12.2017, 19:24 | Сообщение № 31
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Другой вопрос что нужно изменить в коде чтобы в файле примере сохранялся только диапазон с желтыми ячейками?
К сообщению приложен файл: 1757361.xlsm (17.1 Kb)
 
Ответить
СообщениеДругой вопрос что нужно изменить в коде чтобы в файле примере сохранялся только диапазон с желтыми ячейками?

Автор - Mexo
Дата добавления - 29.12.2017 в 19:24
Pelena Дата: Пятница, 29.12.2017, 19:40 | Сообщение № 32
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Mexo, Ваш вопрос уже вышел из рамок темы "Сохранение копии активной книги в заданной папке"
Создайте новую тему в ВОПРОСАХ ПО VBA


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеMexo, Ваш вопрос уже вышел из рамок темы "Сохранение копии активной книги в заданной папке"
Создайте новую тему в ВОПРОСАХ ПО VBA

Автор - Pelena
Дата добавления - 29.12.2017 в 19:40
Алекссандр Дата: Среда, 06.10.2021, 12:58 | Сообщение № 33
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Добрый день! Отличный макрос, огромная благодарность за проделанную работу. А есть ли возможность добавить сохранение файла в PDF?
Или возможность выбора варианта в конце экспорт в PDF или Excel?


Сообщение отредактировал Алекссандр - Среда, 06.10.2021, 13:36
 
Ответить
СообщениеДобрый день! Отличный макрос, огромная благодарность за проделанную работу. А есть ли возможность добавить сохранение файла в PDF?
Или возможность выбора варианта в конце экспорт в PDF или Excel?

Автор - Алекссандр
Дата добавления - 06.10.2021 в 12:58
Alex_ST Дата: Четверг, 07.10.2021, 08:32 | Сообщение № 34
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Алекссандр, Excel не имеет встроенного средства преобразования в PDF
Для этого обычно просто направляют файл на печать на PDF-принтер. Это внешняя программа, которой макросом передать указания куда сохранять созданный файл и с каким именем вряд ли возможно.
Я, по крайней мере, путей не вижу.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеАлекссандр, Excel не имеет встроенного средства преобразования в PDF
Для этого обычно просто направляют файл на печать на PDF-принтер. Это внешняя программа, которой макросом передать указания куда сохранять созданный файл и с каким именем вряд ли возможно.
Я, по крайней мере, путей не вижу.

Автор - Alex_ST
Дата добавления - 07.10.2021 в 08:32
Serge_007 Дата: Четверг, 07.10.2021, 09:30 | Сообщение № 35
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Цитата Алекссандр, 06.10.2021 в 12:58, в сообщении № 33 ()
есть ли возможность добавить сохранение файла в PDF?
[vba]
Код
ExportAsFixedFormat Type:=xlTypePDF
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата Алекссандр, 06.10.2021 в 12:58, в сообщении № 33 ()
есть ли возможность добавить сохранение файла в PDF?
[vba]
Код
ExportAsFixedFormat Type:=xlTypePDF
[/vba]

Автор - Serge_007
Дата добавления - 07.10.2021 в 09:30
Алекссандр Дата: Четверг, 07.10.2021, 10:24 | Сообщение № 36
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Alex_ST, Я пользуюсь Excel 2013 там есть экспорт в PDF, прописал макрос экспорта в PDF (через макрекодер, в VBA могу только копипастить :( ), но как его корректно включить в макрос Copy_As_No :(
[vba]
Код
Sub Экспорт_PDF()
'
'Экспорт_PDF
'

'
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Microsoft Excel Worksheet.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
End Sub[/hide][/spoiler]
[/vba]
 
Ответить
СообщениеAlex_ST, Я пользуюсь Excel 2013 там есть экспорт в PDF, прописал макрос экспорта в PDF (через макрекодер, в VBA могу только копипастить :( ), но как его корректно включить в макрос Copy_As_No :(
[vba]
Код
Sub Экспорт_PDF()
'
'Экспорт_PDF
'

'
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Microsoft Excel Worksheet.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
End Sub[/hide][/spoiler]
[/vba]

Автор - Алекссандр
Дата добавления - 07.10.2021 в 10:24
Alex_ST Дата: Четверг, 07.10.2021, 11:37 | Сообщение № 37
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
[offtop]У меня основной (на котором пишу макросы) - 2003. А там я что-то не видел экспорта в pdf (или просто не искал за ненадобностью)
В более поздних Excel'ях писать макросы общего назначения (доступные для всех открытых книг) не вижу смысла, т.к. в Ribbon-интерфейсе хоть и можно сделать кнопки вызова макросов, но только в пользовательские группы на вкладках. При этом в пользовательских группах подгрупп сделать нельзя и свои картинки кнопкам не сделаешь. [/offtop]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение[offtop]У меня основной (на котором пишу макросы) - 2003. А там я что-то не видел экспорта в pdf (или просто не искал за ненадобностью)
В более поздних Excel'ях писать макросы общего назначения (доступные для всех открытых книг) не вижу смысла, т.к. в Ribbon-интерфейсе хоть и можно сделать кнопки вызова макросов, но только в пользовательские группы на вкладках. При этом в пользовательских группах подгрупп сделать нельзя и свои картинки кнопкам не сделаешь. [/offtop]

Автор - Alex_ST
Дата добавления - 07.10.2021 в 11:37
Мир MS Excel » Вопросы и решения » Готовые решения » Макрос Save_Copy_As (Сохранение копии активной книги в заданной папке)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!