Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
По работе на своём компе создаю/модернизирую/заполняю разные таблицы. С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Сразу оговариваю: С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
tolikt Пользователь Сообщений: 367 tolikt |
.SaveCopyAs чем не устраивает? |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
ThisWorkbook.Password = «1» Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Метод SaveCopyAs требует непосредственного указания пути и имени сохранения, а хотелось бы по вызову макроса выйти на стандартное окно выбора пути и имени сохранения … С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Да и к тому же метод SaveCopyAs не предполагает задания опций сохранения (пароль, предложение открыть только для чтения и т.п.) С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
tolikt Пользователь Сообщений: 367 tolikt |
Наверное, я что-то не понял… |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
{quote}{login=Alex_ST}{date=01.06.2010 01:56}{thema=}{post}Метод SaveCopyAs требует непосредственного указания пути и имени сохранения, а хотелось бы по вызову макроса выйти на стандартное окно выбора пути и имени сохранения …{/post}{/quote}А кто мешает перед этим вывести диалог? Dim sFileName As String, sExpansion As String sFileName = sFileName & IIf(Right(sFileName, Len(sExpansion)) <> sExpansion, sExpansion, «») Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
{quote}{login=Alex_ST}{date=01.06.2010 01:59}{thema=}{post}Да и к тому же метод SaveCopyAs не предполагает задания опций сохранения (пароль, предложение открыть только для чтения и т.п.){/post}{/quote}Алекс, Вы хоть посмотрели, что я предложил? Вы сначала задаете книге пароль, затем сохраняете, затем убираете пароль. Тоже самое можно сделать и с другими атрибутами(только чтение через GetAttr например). Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Я, конечно, естественно, смогу сделать InputBox для задания пути для SaveCopyAs, но, ИМХО, InputBox и окно задания пути сохранения файла — это «две большие разницы» … С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
{quote}{login=Alex_ST}{date=01.06.2010 02:08}{thema=}{post}Я, конечно, естественно, смогу сделать InputBox для задания пути для SaveCopyAs, но, ИМХО, InputBox и окно задания пути сохранения файла — это «две большие разницы» …{/post}{/quote}Я Вам уже целый пример накатал — чем он не устраивает? Выбор через диалог, сохраняет куда укажешь и с паролем, да еще и предупреждает, если такой файл есть. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
The_Prist, вы с такой скоростью создаёте свои ответы пока я ввожу свои, что я их просто не успеваю читать… С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
The_Prist,спасибо! С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
К стати, не подскажите «на вскидку» как к имени файла при сохранении добавить перед расширением суффикс — дату и время сохранения? (ну, например, Имя_моего_рабочего_файла(01-06-2010 14-30).xls С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
SetAttr ThisWorkbook.FullName, vbReadOnly Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
К сожалению, свойство vbReadOnly при SaveCopyAs задать не удаётся… С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Алекс, ну чтоже ВЫ так? Я ж еще в начале писал — «Вы сначала задаете книге пароль, затем сохраняете, затем убираете пароль. Тоже самое можно сделать и с другими атрибутами(только чтение через GetAttr например).» Т.е. сначала Вы сохраняемой книги присваиваете все эти атрибуты, затем сохраняете, потом убираете. Dim sFileName As String, sExpansion As String sFileName = sFileName & IIf(Right(sFileName, Len(sExpansion)) <> sExpansion, sExpansion, «») Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Hugo Пользователь Сообщений: 23251 |
Alex_ST, про дату в названии есть в приёмах: http://www.planetaexcel.ru/tip.php?aid=72 |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Спасибо. Разобрался. Надо вот так: Если кому-нибудь интересно, то «причёсанный» вариант — в файле. С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
#20 08.02.2012 12:01:30 Приходится у себя на компе вести несколько учётных файлов, а их копии регулярно скидывать в разные директории на общем ресурсе.
С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
||
200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub Save_Copy_As_I()
‘—————————————————————————————
‘ Procedure : Save_Copy_As_I
‘ Author : Alex_ST
‘ Topic_HEADER : Сохранить копию текущего файла, запомнив папку для сохранения
‘ Topic_URL : http://www.excelworld.ru/forum/2-1639-18265-16-1335949159
‘ DateTime : 02.05.12, 12:59
‘ 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
200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub Save_Copy_As_I()
‘—————————————————————————————
‘ Procedure : Save_Copy_As_I
‘ Author : Alex_ST
‘ Topic_HEADER : Сохранить копию текущего файла, запомнив папку для сохранения
‘ Topic_URL : http://www.excelworld.ru/forum/2-1639-18265-16-1335949159
‘ DateTime : 02.05.12, 12:59
‘ 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
С уважением,
Алексей
MS Excel 2003 — the best.
Источник
Создание резервных копий ценных файлов
При работе с некоторыми особо ценными файлами, бывает необходимо периодически в течение рабочего дня сохранять его промежуточные версии, чтобы, при необходимости, иметь возможность к ним вернуться. Выполнять постоянно вручную команды «Файл — Сохранить как» утомительно, да и случайно можно вместо «Сохранить как» нажать на «Сохранить», похоронив этим большой кусок работы.
Если у вас Excel 2010, то кроме стандартного автосохранения у вас должна работать система версий — каждый раз при автосохранении Excel делает отдельную копию вашего текущего файла и (даже!) при выходе из программы и отрицательном ответе на вопрос «Сохранить изменения в файле?» все равно сохраняет временную копию. Добраться до этих временных копий можно через вкладку Файл — Сведения — Версии (File — Properties — Versions) :
Для своих проектов я в итоге пришел к другому решению — написал макрос, который сохраняет текущую книгу в заданную папку, добавляя к имени книги текущую дату и время в формате ДД-ММ-ГГ ЧЧ-ММ (например Мой проект 12-10-12 07-35). Периодически запуская этот макрос на ключевых этапах работы с файлом, я получаю список из энного количества файлов-версий рабочей книги и, соответственно, легко могу откатиться к нужному варианту в прошлом.
Откройте редактор Visual Basic, выбрав на вкладке Разработчик — Редактор Visual Basic (Developer — Visual Basic Editor) или нажав ALT+F11. Вставьте через меню Insert — Module новый пустой модуль и скопируйте туда текст этого макроса:
Естественно, путь к папке (C:TEMP) и имя файла (Мой проект) надо заменить на свои.
Если ваша папка для сохранения находится на сетевом диске, то ее адрес можно прописать, используя IP-адрес сервера, например:
Еще одно, возможно, полезное дополнение в том, что имя файла может быть не постоянным, а браться из заданной ячейки листа, где его либо вводит пользователь, либо оно автоматически формируется формулами (например, функцией СЦЕПИТЬ и т.д.). Тогда необходимо будет чуть подправить следующую строку:
Предполагается, что имя файла берется с листа Лист1 из ячейки А1.
Источник
Метод Workbook.SaveAs (Excel)
Сохраняет изменения в книге в другом файле.
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Синтаксис
expression. SaveAs (FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
Выражение Переменная, представляющая объект Workbook .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
FileName | Необязательный | Variant | Строка, указывающая имя сохраняемого файла. Можно включить полный путь; В противном случае Microsoft Excel сохранит файл в текущей папке. |
FileFormat | Необязательный | Variant | Формат файла, используемый при сохранении файла. Список допустимых вариантов см. в перечислении XlFileFormat . Для существующего файла форматом по умолчанию является последний указанный формат файла; Для нового файла по умолчанию используется формат используемой версии Excel. |
Password | Необязательный | Variant | Строка с учетом регистра (не более 15 символов), указывающая пароль защиты, который будет присвоен файлу. |
WriteResPassword | Необязательный | Variant | Строка, указывающая пароль резервирования записи для этого файла. Если файл сохраняется с паролем и пароль не предоставляется при открытии файла, он открывается только для чтения. |
ReadOnlyRecommended | Необязательный | Variant | Значение true для отображения сообщения при открытии файла, в котором рекомендуется открыть файл только для чтения. |
CreateBackup | Необязательный | Variant | Значение True для создания файла резервной копии. |
AccessMode | Необязательный | XlSaveAsAccessMode | Режим доступа к книге. |
ConflictResolution | Необязательный | XlSaveConflictResolution | Значение XlSaveConflictResolution , определяющее, как метод разрешает конфликт при сохранении книги. Если задано значение xlUserResolution, отображается диалоговое окно разрешения конфликтов. |
Если задано значение xlLocalSessionChanges, изменения локального пользователя принимаются автоматически.
Если задано значение xlOtherSessionChanges, изменения из других сеансов автоматически принимаются вместо изменений локального пользователя.
Если этот аргумент опущен, отобразится диалоговое окно разрешения конфликтов.
Сохранение файла рабочей книги Excel, существующего или нового, с помощью кода VBA. Методы Save и SaveAs объекта Workbook, параметр SaveChanges метода Close.
Сохранение существующего файла
Сохранить существующий открытый файл рабочей книги Excel из кода VBA можно несколькими способами. В примерах используется выражение ActiveWorkbook, которое может быть заменено на ThisWorkbook, Workbooks(«ИмяКниги.xlsx»), Workbooks(myFile.Name), где myFile — объектная переменная с присвоенной ссылкой на рабочую книгу Excel.
Простое сохранение файла после внесенных кодом VBA Excel изменений:
Сохранение файла под другим именем (исходная рабочая книга будет автоматически закрыта без сохранения внесенных изменений):
ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Сохранить файл рабочей книги можно перед закрытием, используя параметр SaveChanges метода Close со значением True:
ActiveWorkbook.Close SaveChanges:=True |
Чтобы закрыть файл без сохранения, используйте параметр SaveChanges метода Close со значением False:
ActiveWorkbook.Close SaveChanges:=False |
Сохранение файла под другим именем при закрытии рабочей книги:
ActiveWorkbook.Close SaveChanges:=True, Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Если в примерах с методом Close параметр SaveChanges пропустить, будет открыто диалоговое окно с запросом о сохранении файла.
Новая книга сохраняется с указанием полного имени:
Workbooks.Add ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
После этого к новой книге можно обращаться по имени: Workbooks ("НоваяКнига.xlsx")
.
Если не указать полное имя для сохраняемого файла:
Workbooks.Add ActiveWorkbook.Save |
тогда новая книга будет сохранена с именем и в папке по умолчанию, например: Книга1.xlsx, Книга2.xlsx, Книга3.xlsx и т.д. в папке «Документы».
Heroes 1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
||||
1 |
||||
21.09.2018, 20:30. Показов 11966. Ответов 8 Метки нет (Все метки)
Как сохранить копию файла по определенном пути без макросов.
Есть способ сохранить КОПИЮ файла в формате .xlsx ?
0 |
Заблокирован |
|
21.09.2018, 20:37 |
2 |
Sub SaveAs([Filename], [FileFormat], [Password], [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], [AccessMode As XlSaveAsAccessMode = xlNoChange], [ConflictResolution], [AddToMru], [TextCodepage], [TextVisualLayout], [Local])
1 |
1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
|
21.09.2018, 21:38 [ТС] |
3 |
SaveAs сохраняет файл, в котором выполняется макрос.
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
21.09.2018, 23:54 |
4 |
|||
Сообщение было отмечено Heroes как решение РешениеHeroes, сначала SaveCopyAs, потом открыть и сохранить в нужном формате. Допилите по необходимости.
GetAttr(strPath) And 0 всегда будет 0.
1 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
22.09.2018, 18:41 |
5 |
Если меняете формат (да ещё и содержимое) — как это может быть КОПИЕЙ?
0 |
1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
|
22.09.2018, 21:21 [ТС] |
6 |
Если меняете формат (да ещё и содержимое) — как это может быть КОПИЕЙ? Ок, это Не копия,
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
22.09.2018, 21:25 |
7 |
Ну вот потому SaveCopyAs никак и не подходит.
1 |
1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
|
22.09.2018, 21:56 [ТС] |
8 |
Ну вот потому SaveCopyAs никак и не подходит. вы правы не подходит, Есть еще идеи?
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
22.09.2018, 22:30 |
9 |
Можно не делать копию, а сразу сохранять книгу в нужном виде — но тогда эта конкретная активная книга и будет уже в другом формате, и если Вы хотите продолжать работать с нею в том первозданном виде — нужно её снова открывать. А эту — закрывать.
1 |
Макрос Save_Copy_As |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |