Страницы: 1
RSS
Создание макроса для сохранения книги, макрос "сохранить как..."
 
Доброго времени суток, уважаемые форумчане!
Наперед извиняюсь, если оффтоп, шерстил форум но не нашел.

Очень надеюсь на вашу помощь вот в такой ситуации. Пришлось мне работать в одной учетной программе, а там, для удобства, любые данные можно выгрузить в Excel. Очень полезная функция, скажу я вам, только вот по умолчанию книга с данными сохраняется в папке Temp, и изменить это никак не возможно. В результате - одно неверное "закрытие", и весь отчет канул в Лету, да еще и имя книги - рандомный набор символов - попробуй разбери где что. И вот надумал я создать макрос по своим функциям аналогичный пункту меню "Сохранить как...", зачем спросите? Да для того чтобы можно было назначить его на какую-нибудь комбинацию клавиш.(Помнится мне в Open/Libre Office наряду с "Сохранить" [Ctrl+S], есть и комбинация "Сохранить как..." [Ctrl+Shift+S], а вот в Excel, к сожалению, такой нет). Получился у меня вот такой код:
Код
Sub Save_Ass ()
 
 Const iTitle = "Сохранение рабочей книги"
 Const FilterList = "Книга Excel 97-2003 (*.xls), *.xls,Книга Excel (*.xlsx), *.xlsx,Книга Excel (макро) (*.xlsm), *.xlsm,Книга Excel (двоичная) (*.xlsb), *.xlsb"
 Dim strName1 As String

 strName1 = "Книга"
 strName2 = Application.GetSaveAsFilename(InitialFileName:=strName1, filefilter:=FilterList)
 If strName2 = "False" Then
 MsgBox prompt:="Сохранение отменено", Title:=iTitle
 Else
 ActiveWorkbook.SaveAs Filename:=strName2
 End If
 
End Sub

Вот только сохраняет он коректно только книги в формате .xls (97-2003) и .xlsx (2007-2010), а при попытке сохранить книгу в .xlsb и .xlsm дает ошибку:
Цитата
Run-time error '1004'
Данное расширение нельзя использовать с выбранным типом файла.
Измените расширение в поле "Имя файла" или выбирите другой тип файла
в списке "Тип файла".
При ручном введении расширения - та же ошибка.
Подскажите пожалуйста какой выход из этой ситуации.

P.S. И еще - как прописать по умолчанию какую-то папку, на которой всегда будет открываться
окно вызваное через Application.GetSaveAsFilename (например "Мои документы")
 
А не пробовали записать сохранение макрорекордером?
 
Сохранял, только рекордер сохраняет файл с каким-то одним расширением (либо .xls, либо .xlsb), а я хочу чтобы был выбор.
 
Так выбирайте при записи - там большой выбор: и xlsx, xlsm, xlsb...
 
Пробовал, выбирал, там тип файла прописывается числовым значением. Но и это значение "не работает" при вставке в код, или я как-то не так его прописал...
 
Вот что у меня записал рекордер при Сохранить Как и с поддержкой макросов (xlsm):
Код
ActiveWorkbook.SaveAs Filename:="D:\Doc\Excel\Книга107.xlsm", FileFormat:= _
        xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
 
В Excel горячая клавиша F12 - сохранить как. Не вижу смысла свой диалог писать.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Спасибо Вам огромное! Вот уже 5лет пользую Excel разных версий от ’97 до ’10, не новичок, вроде бы, даже вот до макросов добрался, а про F12 не знал.

Уважаемые администраторы, ответ получен, тему можно закрыть.
Страницы: 1
Наверх