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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос Save_Copy_As - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Макрос Save_Copy_As (Сохранение копии активной книги в заданной папке)
Макрос Save_Copy_As
Alex_ST Дата: Вторник, 07.02.2012, 17:04 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Данный макрос, помещённый в Personal.xls, при его вызове сохраняет копию активной книги в заданной в диалоге выбора папке.
Путь к папке для сохранения копий хранится в коллекции Names самой сохраняемой книги. Поэтому путь сохранения копии приходится задавать только один раз - при первом сохранении копии. В последующем диалог сохранения копии будет открываться уже на нужной папке.
Сохраняемые копии имеют то же имя, что и файл-оригинал, но с приписанным перед расширением суффиксом - датой и временем сохранения копии.
[vba]
Code
Sub Save_Copy_As()
'---------------------------------------------------------------------------------------
' Procedure    : Save_Copy_As
' Author       : Alex_ST
' DateTime     : 07.02.2012, 17:05
' URL          : http://www.excelworld.ru/forum/3-1293-14737-16-1328619875
' Purpose      : Сохранение копии активного файла
' Notes        : Путь сохранения копий хранится в  коллекции .Names книги (в именованном диапазоне)
'---------------------------------------------------------------------------------------
      Const sPath_in_Names = "Path4SaveCopyAs"   ' имя элемента коллекции .Names, в котором должен храниться путь для сохранения копий файла
      Dim sSuff$: sSuff = " [" & Format(Now, "yyyy/mm/dd hh-mm'ss''") & "]"    ' суффикс к имени файла копии - дата и время сохренения копии файла
      Dim FileName, sExp$, sDirPath$, sFullFilePath$, sNewPath$
      Dim bReadOnlyRecommended As Boolean
      With ActiveWorkbook
         FileName = .Name   ' например, "Книга1.xls"
         sExp = Right(FileName, Len(FileName) - InStrRev(FileName, ".") + 1)   ' расширение файла вместе с точкой (например, ".xls")
         FileName = Left(FileName, Len(FileName) - Len(sExp)) & sSuff & sExp   ' например, "Книга1 [2012.02.06 15-24'39''].xls"
         On Error Resume Next
         sDirPath = .Names(sPath_in_Names).Value   ' считать из коллекции .Names значение, ранее сохраненное под именем sPath_in_Names
         If Err Then .Names.Add sPath_in_Names, .Path & "\": sDirPath = .Names(sPath_in_Names).Value   ' если считать не удалось, значит путь ранее не задавался и он для первого раза задаётся равным 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
         sFullFilePath = sDirPath & FileName   ' полный путь сохранения вместе с полным именем копии
REPEAT_:
         FileName = Application.GetSaveAsFilename(InitialFileName:=sFullFilePath, _
                      FileFilter:="Excel Files (*" & sExp & "), *" & sExp & ", All Files (*.*),*.*", _
                      Title:="Сохранение копии файла")   'задать путь сохранения и имя копии файла в окне выбора
         If VarType(FileName) = vbBoolean Then Exit Sub   ' если нажали "Отмена", то FileName = False, если "Сохранить" - полный путь к файлу вместе с его именем
         If FileName = .FullName Then MsgBox "Здесь нельзя сохранить файл под таким именем!", 16, "Ошибка": GoTo REPEAT_
         sDirPath = Left(FileName, InStrRev(FileName, "\"))   ' путь к папке сохранения копий без имени файла
         .Names(sPath_in_Names).Value = sDirPath   ' запомнить выбранный в диалоге путь в коллекции .Names под именем sPath_in_Names
         bReadOnlyRecommended = .ReadOnlyRecommended   ' запомнить параметры исходного файла
         .ReadOnlyRecommended = --(MsgBox("Рекомендовать открывать файл только для чтения?", 36) - 7)   ' MsgBox Argument 4==vbYesNo 32==vbQuestion, MsgBox Return Values: vbYes=6, vbNo=7
         .SaveCopyAs FileName
         .ReadOnlyRecommended = bReadOnlyRecommended   ' восстановить параметры исходного файла
      End With
End Sub
[/vba]



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


Сообщение отредактировал Alex_ST - Вторник, 07.02.2012, 17:19
 
Ответить
СообщениеДанный макрос, помещённый в Personal.xls, при его вызове сохраняет копию активной книги в заданной в диалоге выбора папке.
Путь к папке для сохранения копий хранится в коллекции Names самой сохраняемой книги. Поэтому путь сохранения копии приходится задавать только один раз - при первом сохранении копии. В последующем диалог сохранения копии будет открываться уже на нужной папке.
Сохраняемые копии имеют то же имя, что и файл-оригинал, но с приписанным перед расширением суффиксом - датой и временем сохранения копии.
[vba]
Code
Sub Save_Copy_As()
'---------------------------------------------------------------------------------------
' Procedure    : Save_Copy_As
' Author       : Alex_ST
' DateTime     : 07.02.2012, 17:05
' URL          : http://www.excelworld.ru/forum/3-1293-14737-16-1328619875
' Purpose      : Сохранение копии активного файла
' Notes        : Путь сохранения копий хранится в  коллекции .Names книги (в именованном диапазоне)
'---------------------------------------------------------------------------------------
      Const sPath_in_Names = "Path4SaveCopyAs"   ' имя элемента коллекции .Names, в котором должен храниться путь для сохранения копий файла
      Dim sSuff$: sSuff = " [" & Format(Now, "yyyy/mm/dd hh-mm'ss''") & "]"    ' суффикс к имени файла копии - дата и время сохренения копии файла
      Dim FileName, sExp$, sDirPath$, sFullFilePath$, sNewPath$
      Dim bReadOnlyRecommended As Boolean
      With ActiveWorkbook
         FileName = .Name   ' например, "Книга1.xls"
         sExp = Right(FileName, Len(FileName) - InStrRev(FileName, ".") + 1)   ' расширение файла вместе с точкой (например, ".xls")
         FileName = Left(FileName, Len(FileName) - Len(sExp)) & sSuff & sExp   ' например, "Книга1 [2012.02.06 15-24'39''].xls"
         On Error Resume Next
         sDirPath = .Names(sPath_in_Names).Value   ' считать из коллекции .Names значение, ранее сохраненное под именем sPath_in_Names
         If Err Then .Names.Add sPath_in_Names, .Path & "\": sDirPath = .Names(sPath_in_Names).Value   ' если считать не удалось, значит путь ранее не задавался и он для первого раза задаётся равным 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
         sFullFilePath = sDirPath & FileName   ' полный путь сохранения вместе с полным именем копии
REPEAT_:
         FileName = Application.GetSaveAsFilename(InitialFileName:=sFullFilePath, _
                      FileFilter:="Excel Files (*" & sExp & "), *" & sExp & ", All Files (*.*),*.*", _
                      Title:="Сохранение копии файла")   'задать путь сохранения и имя копии файла в окне выбора
         If VarType(FileName) = vbBoolean Then Exit Sub   ' если нажали "Отмена", то FileName = False, если "Сохранить" - полный путь к файлу вместе с его именем
         If FileName = .FullName Then MsgBox "Здесь нельзя сохранить файл под таким именем!", 16, "Ошибка": GoTo REPEAT_
         sDirPath = Left(FileName, InStrRev(FileName, "\"))   ' путь к папке сохранения копий без имени файла
         .Names(sPath_in_Names).Value = sDirPath   ' запомнить выбранный в диалоге путь в коллекции .Names под именем sPath_in_Names
         bReadOnlyRecommended = .ReadOnlyRecommended   ' запомнить параметры исходного файла
         .ReadOnlyRecommended = --(MsgBox("Рекомендовать открывать файл только для чтения?", 36) - 7)   ' MsgBox Argument 4==vbYesNo 32==vbQuestion, MsgBox Return Values: vbYes=6, vbNo=7
         .SaveCopyAs FileName
         .ReadOnlyRecommended = bReadOnlyRecommended   ' восстановить параметры исходного файла
      End With
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 07.02.2012 в 17:04
Alex_ST Дата: Среда, 02.05.2012, 13:02 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
А вот то же самое, но с автонумерацией вместо проставления времени:[vba]
Code
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
[/vba]



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


Сообщение отредактировал Alex_ST - Среда, 02.05.2012, 13:02
 
Ответить
СообщениеА вот то же самое, но с автонумерацией вместо проставления времени:[vba]
Code
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
[/vba]

Автор - Alex_ST
Дата добавления - 02.05.2012 в 13:02
Gloom Дата: Пятница, 13.07.2012, 14:35 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Рад приветствовать, О, Великий и Фсимагучий!
Умоляю, подскажи, что добавить в сие чудо,
чтобы макрос включался не с кнопки а автозапуском при открытии книги и творил то же самое, через заданный промежуток времени?!
Можно ли убрать из макроса запрос на подтверждение сохранения, а просто прописать адрес в теле кода?
Буду предельно признателен за любую помощь.


-=*=-
 
Ответить
СообщениеРад приветствовать, О, Великий и Фсимагучий!
Умоляю, подскажи, что добавить в сие чудо,
чтобы макрос включался не с кнопки а автозапуском при открытии книги и творил то же самое, через заданный промежуток времени?!
Можно ли убрать из макроса запрос на подтверждение сохранения, а просто прописать адрес в теле кода?
Буду предельно признателен за любую помощь.

Автор - Gloom
Дата добавления - 13.07.2012 в 14:35
Alex_ST Дата: Пятница, 13.07.2012, 15:53 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Сегодня уже не успею: конец пятницы, надо завершить пару-тройку мелких дел.
А дома в выходные нет возможности надолго засесть за комп.
Попробую сделать что-нибудь на следующей неделе.



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

Автор - Alex_ST
Дата добавления - 13.07.2012 в 15:53
Alex_ST Дата: Понедельник, 16.07.2012, 17:12 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
В черновом варианте сделал.
Пока не как надстройка - так проще отлаживать. Потом переделать в надстройку не трудно.
Потестируйте.
Что-то я там, кажется, перемудрил с защитами от ошибок... А может и нет. Надо поюзать, посмотреть "в разных позах".
Макрос:
1. Проверяет в ходе работы доступность папки бэкапов на запись. Если папка вдруг станет недоступна, то останавливается с предупреждением.
2. Производит записи копий не только по таймеру, но и при сохранениях книг.
3. В автоматическом режиме не бэкапит те книги, которые не изменялись, а также надстройки.
К сообщению приложен файл: AutoBackUp.xls (77.0 Kb)



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


Сообщение отредактировал Alex_ST - Понедельник, 16.07.2012, 20:38
 
Ответить
СообщениеВ черновом варианте сделал.
Пока не как надстройка - так проще отлаживать. Потом переделать в надстройку не трудно.
Потестируйте.
Что-то я там, кажется, перемудрил с защитами от ошибок... А может и нет. Надо поюзать, посмотреть "в разных позах".
Макрос:
1. Проверяет в ходе работы доступность папки бэкапов на запись. Если папка вдруг станет недоступна, то останавливается с предупреждением.
2. Производит записи копий не только по таймеру, но и при сохранениях книг.
3. В автоматическом режиме не бэкапит те книги, которые не изменялись, а также надстройки.

Автор - Alex_ST
Дата добавления - 16.07.2012 в 17:12
Alex_ST Дата: Вторник, 17.07.2012, 12:24 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Чуть полирнул во время обеда.
Проверьте.
К сообщению приложен файл: 4169101.xls (81.0 Kb)



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


Сообщение отредактировал Alex_ST - Вторник, 17.07.2012, 12:46
 
Ответить
СообщениеЧуть полирнул во время обеда.
Проверьте.

Автор - Alex_ST
Дата добавления - 17.07.2012 в 12:24
Gloom Дата: Пятница, 20.07.2012, 12:11 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Прошу прощения за длительное молчание.
Помучал файлик, вроде все работает. По каким то причинам не всегда работает хоткей на вызов бокса, (запускаю из вба Show_), при нажатии кнопки ON-OFF надпись не меняется, состояние видно только по положению кнопки (утоплена/отжата) и по периодическим подвисонам при сохранении (файлы гигантские у меня). Пытался перенести все добро в личную книгу макросов, видимо сделал как то не так, материться на каждом шагу, в макросах я пока криворук sad


-=*=-
 
Ответить
СообщениеПрошу прощения за длительное молчание.
Помучал файлик, вроде все работает. По каким то причинам не всегда работает хоткей на вызов бокса, (запускаю из вба Show_), при нажатии кнопки ON-OFF надпись не меняется, состояние видно только по положению кнопки (утоплена/отжата) и по периодическим подвисонам при сохранении (файлы гигантские у меня). Пытался перенести все добро в личную книгу макросов, видимо сделал как то не так, материться на каждом шагу, в макросах я пока криворук sad

Автор - Gloom
Дата добавления - 20.07.2012 в 12:11
Alex_ST Дата: Пятница, 20.07.2012, 12:59 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Gloom,
Вы слишком долго молчали.
Я как раз сейчас собрался выключать компьютер на долго - ухожу в отпуск на 2 недели.
Ещё бы 20 минут и я бы уже вообще не ответил.

Только что проверил: у меня с кнопкой всё в порядке и в 2003, и в 2010-ом Excel'e
Переносить очень просто:
1. Мышкой тащите к себе в Personal.xls модули frmAutoSaveCopy и modAutoSaveCopy
2. Из модуля книги ThisWorkbook копируете всё содержимое и вставляете в свой модуль книги (скорее всего он называется ЭтаКнига)
3. Программное имя листа "Лист1" в своём Personal.xls меняете на имя "ShtSetup"
Программное имя - это не имя листа. Оно изменяется только в VBE :

Всё. Выключаюсь. Убегаю чемодан паковать. Через 3 часа поезд.
К сообщению приложен файл: 5743661.jpg (52.7 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеGloom,
Вы слишком долго молчали.
Я как раз сейчас собрался выключать компьютер на долго - ухожу в отпуск на 2 недели.
Ещё бы 20 минут и я бы уже вообще не ответил.

Только что проверил: у меня с кнопкой всё в порядке и в 2003, и в 2010-ом Excel'e
Переносить очень просто:
1. Мышкой тащите к себе в Personal.xls модули frmAutoSaveCopy и modAutoSaveCopy
2. Из модуля книги ThisWorkbook копируете всё содержимое и вставляете в свой модуль книги (скорее всего он называется ЭтаКнига)
3. Программное имя листа "Лист1" в своём Personal.xls меняете на имя "ShtSetup"
Программное имя - это не имя листа. Оно изменяется только в VBE :

Всё. Выключаюсь. Убегаю чемодан паковать. Через 3 часа поезд.

Автор - Alex_ST
Дата добавления - 20.07.2012 в 12:59
Gloom Дата: Пятница, 20.07.2012, 13:07 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Благодарю.
Хорошего отдыха! smile


-=*=-
 
Ответить
СообщениеБлагодарю.
Хорошего отдыха! smile

Автор - Gloom
Дата добавления - 20.07.2012 в 13:07
Alex_ST Дата: Пятница, 20.07.2012, 15:44 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Выдалась пара минут до отъезда.
Вот, сделал надстройку.
Положите её в папку C:\Users\Имя_Пользователя\AppData\Roaming\Microsoft\AddIns и подключите после запуска Excel'я (2003: Сервис-Надстройки-...) или просто положите в XLSTART рядом с Personal.xls (тогда она автоматом подключится при запуске)
К сообщению приложен файл: AutoSaveCopy_v..xla (81.0 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеВыдалась пара минут до отъезда.
Вот, сделал надстройку.
Положите её в папку C:\Users\Имя_Пользователя\AppData\Roaming\Microsoft\AddIns и подключите после запуска Excel'я (2003: Сервис-Надстройки-...) или просто положите в XLSTART рядом с Personal.xls (тогда она автоматом подключится при запуске)

Автор - Alex_ST
Дата добавления - 20.07.2012 в 15:44
Gloom Дата: Понедельник, 30.07.2012, 09:36 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Работает безупречно!
Многим покажется мелочью, но всем кто безвозвратно утрачивал результат своей работы за полдня настоятельно рекомендую!
Невидимый и ненадоедливый ангел-хранитель Ваших потуг и усилий.

З.Ы. Пару минут искал в панелях кнопки или менюшки от настройки happy , ВЫЗОВ МЕНЮ (Alt+Ctrl+Del)


-=*=-
 
Ответить
СообщениеРаботает безупречно!
Многим покажется мелочью, но всем кто безвозвратно утрачивал результат своей работы за полдня настоятельно рекомендую!
Невидимый и ненадоедливый ангел-хранитель Ваших потуг и усилий.

З.Ы. Пару минут искал в панелях кнопки или менюшки от настройки happy , ВЫЗОВ МЕНЮ (Alt+Ctrl+Del)

Автор - Gloom
Дата добавления - 30.07.2012 в 09:36
Alex_ST Дата: Воскресенье, 05.08.2012, 14:20 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Рад, что помог.
Quote (Gloom)
Пару минут искал в панелях кнопки или менюшки от настройки
Если бы я сделал кнопочку, то её мог бы нажать любой "лапоть", портящий Вам файлы, и выйти в режим настройки с соответствующими последствиями. Поэтому и оставил вызов по горячим клавишам Ctrl+Shift+S
А при чём здесь "фигура из трёх пальцев" biggrin
Quote (Gloom)
(Alt+Ctrl+Del)
я, честно говоря, не понял sad



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


Сообщение отредактировал Alex_ST - Воскресенье, 05.08.2012, 14:21
 
Ответить
СообщениеРад, что помог.
Quote (Gloom)
Пару минут искал в панелях кнопки или менюшки от настройки
Если бы я сделал кнопочку, то её мог бы нажать любой "лапоть", портящий Вам файлы, и выйти в режим настройки с соответствующими последствиями. Поэтому и оставил вызов по горячим клавишам Ctrl+Shift+S
А при чём здесь "фигура из трёх пальцев" biggrin
Quote (Gloom)
(Alt+Ctrl+Del)
я, честно говоря, не понял sad

Автор - Alex_ST
Дата добавления - 05.08.2012 в 14:20
Alex_ST Дата: Среда, 08.08.2012, 14:20 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Пофиксил баги (в предыдущей версии кроме книг сохранялись ещё и надстройки) и чуть навёл красоты.
По обновленной версии создал топик Надстройка AutoSaveCopy



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеПофиксил баги (в предыдущей версии кроме книг сохранялись ещё и надстройки) и чуть навёл красоты.
По обновленной версии создал топик Надстройка AutoSaveCopy

Автор - Alex_ST
Дата добавления - 08.08.2012 в 14:20
Гость Дата: Четверг, 06.09.2012, 18:45 | Сообщение № 14
Группа: Гости
Alex_ST,

Сразу прошу прощения, если вопрос дурацкий. Но уже полдня гуглю, и чего то никак.

Есть файл, который необходимо сохранять с именем содержащим текущую дату+1.

Сейчас это выглядит так:
[vba]
Код
Dim r As Date
r = Format(Now(), "dd mmmm yyyy")
ActiveWorkbook.SaveAs Filename:= _
"F:\Работа\\Заказ_" & r & ".xls", FileFormat:=xlExcel8 _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=True, _
CreateBackup:=False
[/vba]

Но мне надо чтобы формат даты был не dd mmmm yyyy, наоборот сначала год, потом месяц, потом собственно число. Такое возможно?
И ещё как сделать чтобы дата была +1, т.е. если сегодня 6 сентября 2012г, надо чтобы файл был "Заказ_20120907"

Буду премного благодарен за помощь. Ну или за посыл в верном направлении. :)
 
Ответить
СообщениеAlex_ST,

Сразу прошу прощения, если вопрос дурацкий. Но уже полдня гуглю, и чего то никак.

Есть файл, который необходимо сохранять с именем содержащим текущую дату+1.

Сейчас это выглядит так:
[vba]
Код
Dim r As Date
r = Format(Now(), "dd mmmm yyyy")
ActiveWorkbook.SaveAs Filename:= _
"F:\Работа\\Заказ_" & r & ".xls", FileFormat:=xlExcel8 _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=True, _
CreateBackup:=False
[/vba]

Но мне надо чтобы формат даты был не dd mmmm yyyy, наоборот сначала год, потом месяц, потом собственно число. Такое возможно?
И ещё как сделать чтобы дата была +1, т.е. если сегодня 6 сентября 2012г, надо чтобы файл был "Заказ_20120907"

Буду премного благодарен за помощь. Ну или за посыл в верном направлении. :)

Автор - Гость
Дата добавления - 06.09.2012 в 18:45
Alex_ST Дата: Четверг, 06.09.2012, 21:39 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
И вовсе незачем было долго гуглить.
Достаточно было просто нажать F1, поставив курсор в своём коде на слово Now , чтобы моментально узнать, что эта функция возвращает дату и время, а посмотрев по See Also на функцию Date, узнать, что она возвращает дату.
А точно также, встав курсором на слово Format, можно было узнать про аргументы этой функции (да в конце-концов просто логическим путём можно было догадаться, что если хочешь формат ГОД-МЕСЯЦ-ДЕНЬ, то и в аргументах функции параметры должны быть указаны в таком же порядке)
Т.е. Вам нужно было всего лишь написать:[vba]
Code
Format(Date + 1, "yyyy mm dd")
[/vba]



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


Сообщение отредактировал Alex_ST - Четверг, 06.09.2012, 21:44
 
Ответить
СообщениеИ вовсе незачем было долго гуглить.
Достаточно было просто нажать F1, поставив курсор в своём коде на слово Now , чтобы моментально узнать, что эта функция возвращает дату и время, а посмотрев по See Also на функцию Date, узнать, что она возвращает дату.
А точно также, встав курсором на слово Format, можно было узнать про аргументы этой функции (да в конце-концов просто логическим путём можно было догадаться, что если хочешь формат ГОД-МЕСЯЦ-ДЕНЬ, то и в аргументах функции параметры должны быть указаны в таком же порядке)
Т.е. Вам нужно было всего лишь написать:[vba]
Code
Format(Date + 1, "yyyy mm dd")
[/vba]

Автор - Alex_ST
Дата добавления - 06.09.2012 в 21:39
Гость Дата: Пятница, 07.09.2012, 20:39 | Сообщение № 16
Группа: Гости
Quote (Alex_ST)
Достаточно было просто нажать F1

Мда, а слона то я и не заметил.

Quote (Alex_ST)
поставив курсор в своём коде на слово Now , чтобы моментально узнать, что эта функция возвращает дату и время, а посмотрев по See Also на функцию Date, узнать, что она возвращает дату.

Я в макрос не то, чтобы чайник... Есть те кто хуже чайников? :)

Quote (Alex_ST)
логическим путём можно было догадаться, что если хочешь формат ГОД-МЕСЯЦ-ДЕНЬ, то и в аргументах функции параметры должны быть указаны в таком же порядке

Ага, я сначала тоже так подумал, но оказалось, что всё равно сохраняет в формате дд/мммм/уууу.

Quote (Alex_ST)
Format(Date + 1, "yyyy mm dd")

Спасибо большое!
 
Ответить
Сообщение
Quote (Alex_ST)
Достаточно было просто нажать F1

Мда, а слона то я и не заметил.

Quote (Alex_ST)
поставив курсор в своём коде на слово Now , чтобы моментально узнать, что эта функция возвращает дату и время, а посмотрев по See Also на функцию Date, узнать, что она возвращает дату.

Я в макрос не то, чтобы чайник... Есть те кто хуже чайников? :)

Quote (Alex_ST)
логическим путём можно было догадаться, что если хочешь формат ГОД-МЕСЯЦ-ДЕНЬ, то и в аргументах функции параметры должны быть указаны в таком же порядке

Ага, я сначала тоже так подумал, но оказалось, что всё равно сохраняет в формате дд/мммм/уууу.

Quote (Alex_ST)
Format(Date + 1, "yyyy mm dd")

Спасибо большое!

Автор - Гость
Дата добавления - 07.09.2012 в 20:39
Alex_ST Дата: Понедельник, 22.09.2014, 21:22 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Тут в другом топике попросили подпилить процедуры так, чтобы имя копии бралось из ячейки листа.
Спрошено-сделано. А за одно и причесал два предыдущих макроса. См. приаттаченный файл.
В новом макросе Save_Copy_As_Name_And_Index имя сохраняемого файла составляется из двух частей: корня и суффикса. Корень задаётся в ячейке, на которую указывает имя ROOT. Суффикс - это 4-значный накопительный индекс.
В остальном принцип тот же, что и в предыдущих процедурах: путь для сохранения копий хранится в именах под указателем Path4SaveCopyAs
Если в файле такое имя не найдено в книге, то оно создаётся автоматически и содержит для начала путь к активной книге. Сохранение копии предлагается по последнему указанному пользователем пути.
Если имя ROOT не задано в книге, то оно создаётся "отвязанным от ячейки" и равным "Модель не задана"
После чего не составляет труда "привязать" это имя к нужной ячейке, используя диспетчер имён.
Для того, чтобы при сохранении файла под именем, задаваемым в ячейке в ручную, не возникало проблем, добавлена функция исправления (замены) не допустимых в именах файлов символов
Код
/\:*?<>|"
на символ _
В общем, комментариев там много. Разберётесь, кому нужно сами. А если всё-таки будут вопросы, спрашивайте.
К сообщению приложен файл: Save_Copy_As_No.xls (56.5 Kb)



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


Сообщение отредактировал Alex_ST - Понедельник, 22.09.2014, 21:38
 
Ответить
СообщениеТут в другом топике попросили подпилить процедуры так, чтобы имя копии бралось из ячейки листа.
Спрошено-сделано. А за одно и причесал два предыдущих макроса. См. приаттаченный файл.
В новом макросе Save_Copy_As_Name_And_Index имя сохраняемого файла составляется из двух частей: корня и суффикса. Корень задаётся в ячейке, на которую указывает имя ROOT. Суффикс - это 4-значный накопительный индекс.
В остальном принцип тот же, что и в предыдущих процедурах: путь для сохранения копий хранится в именах под указателем Path4SaveCopyAs
Если в файле такое имя не найдено в книге, то оно создаётся автоматически и содержит для начала путь к активной книге. Сохранение копии предлагается по последнему указанному пользователем пути.
Если имя ROOT не задано в книге, то оно создаётся "отвязанным от ячейки" и равным "Модель не задана"
После чего не составляет труда "привязать" это имя к нужной ячейке, используя диспетчер имён.
Для того, чтобы при сохранении файла под именем, задаваемым в ячейке в ручную, не возникало проблем, добавлена функция исправления (замены) не допустимых в именах файлов символов
Код
/\:*?<>|"
на символ _
В общем, комментариев там много. Разберётесь, кому нужно сами. А если всё-таки будут вопросы, спрашивайте.

Автор - Alex_ST
Дата добавления - 22.09.2014 в 21:22
nikola77 Дата: Среда, 25.03.2015, 10:19 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, подскажите, что и где надо исправить, чтобы исходный файл в формате XLSM сохранялся в XLSX (без макросов)?
 
Ответить
СообщениеДобрый день, подскажите, что и где надо исправить, чтобы исходный файл в формате XLSM сохранялся в XLSX (без макросов)?

Автор - nikola77
Дата добавления - 25.03.2015 в 10:19
Alex_ST Дата: Среда, 25.03.2015, 12:49 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
А если включить макрорекордер, записать процесс сохранения и самому попытаться разобраться?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА если включить макрорекордер, записать процесс сохранения и самому попытаться разобраться?

Автор - Alex_ST
Дата добавления - 25.03.2015 в 12:49
nikola77 Дата: Среда, 25.03.2015, 13:06 | Сообщение № 20
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
уж простите моя глупость, но никак не могу понять в какое место Вашего макроса вставить FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 
Ответить
Сообщениеуж простите моя глупость, но никак не могу понять в какое место Вашего макроса вставить FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

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

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