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

Вход

Регистрация

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

 

= Мир MS Excel/Задавать свое имя файла при сохранении - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Задавать свое имя файла при сохранении (Макросы/Sub)
Задавать свое имя файла при сохранении
Хомка Дата: Пятница, 10.06.2016, 09:54 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день. Есть необходимость при сохранении файла указывать необходимое имя файла в диалоговом окне. И так что бы это срабатывало при "Сохранить", "Сохранить как" и "Ctrl + S"
Сама додумалась только до
[vba]
Код

Sub FileSaveAs()
Dim AD As String
Dim fd As FileDialog
    AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"

'    With Application.Dialogs(Excel.xlDialogSaveAs)
'        If .Show = -1 Then ThisDocument.SaveAs Filename:=.Name
'    End With
    W = Application.ActiveWorkbook.Path
  
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = AD
If .Show = 0 Then
Else
.Execute
End If
End With
Set fd = Nothing

End Sub
[/vba]

Но чувствую пошла не в том направлении :(
 
Ответить
СообщениеДобрый день. Есть необходимость при сохранении файла указывать необходимое имя файла в диалоговом окне. И так что бы это срабатывало при "Сохранить", "Сохранить как" и "Ctrl + S"
Сама додумалась только до
[vba]
Код

Sub FileSaveAs()
Dim AD As String
Dim fd As FileDialog
    AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"

'    With Application.Dialogs(Excel.xlDialogSaveAs)
'        If .Show = -1 Then ThisDocument.SaveAs Filename:=.Name
'    End With
    W = Application.ActiveWorkbook.Path
  
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = AD
If .Show = 0 Then
Else
.Execute
End If
End With
Set fd = Nothing

End Sub
[/vba]

Но чувствую пошла не в том направлении :(

Автор - Хомка
Дата добавления - 10.06.2016 в 09:54
sboy Дата: Пятница, 10.06.2016, 10:07 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 49 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
Может это поможет?
[vba]
Код

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
...
End Sub
[/vba]
 
Ответить
СообщениеДобрый день.
Может это поможет?
[vba]
Код

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
...
End Sub
[/vba]

Автор - sboy
Дата добавления - 10.06.2016 в 10:07
_Boroda_ Дата: Пятница, 10.06.2016, 10:15 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 9377
Репутация: 3950 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Сходите в макросы (Альт+F11) - ВБАПроджект (Контрл+R) - даблклик на "ЭтаКнига" для нужного файла. Вылезет окошко с двумя вып. списками наверху. В левом выберите Workbook (Все то, что напишется в этом окошке автоматически, потом сотрите), в правом выберите BeforeSave, а вот то, что напишется в окошке теперь, как раз Вам и нужно. Между Sub и End Sub и пишите свой код.
Вот справка
https://msdn.microsoft.com/en-us....5).aspx


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеСходите в макросы (Альт+F11) - ВБАПроджект (Контрл+R) - даблклик на "ЭтаКнига" для нужного файла. Вылезет окошко с двумя вып. списками наверху. В левом выберите Workbook (Все то, что напишется в этом окошке автоматически, потом сотрите), в правом выберите BeforeSave, а вот то, что напишется в окошке теперь, как раз Вам и нужно. Между Sub и End Sub и пишите свой код.
Вот справка
https://msdn.microsoft.com/en-us....5).aspx

Автор - _Boroda_
Дата добавления - 10.06.2016 в 10:15
Хомка Дата: Пятница, 10.06.2016, 11:13 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, sboy, Спасибо) Диалог работает) clap

Возник еще один момент, можно ли как-то указать тип файла (*.xmlt) ?
 
Ответить
Сообщение_Boroda_, sboy, Спасибо) Диалог работает) clap

Возник еще один момент, можно ли как-то указать тип файла (*.xmlt) ?

Автор - Хомка
Дата добавления - 10.06.2016 в 11:13
sboy Дата: Пятница, 10.06.2016, 12:47 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 49 ±
Замечаний: 0% ±

Excel 2007
[vba]
Код
AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"
[/vba]


если в этой строке поправить? не помогает?


Сообщение отредактировал sboy - Пятница, 10.06.2016, 12:48
 
Ответить
Сообщение
[vba]
Код
AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"
[/vba]


если в этой строке поправить? не помогает?

Автор - sboy
Дата добавления - 10.06.2016 в 12:47
Хомка Дата: Пятница, 10.06.2016, 13:36 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
в этой строке указывается имя, а не тип. Да и ".xlsm" даже в имени почему-то не добавляет
[moder]Излишнее цитирование запрещено Правилами форума. Удалил[/moder]


Сообщение отредактировал _Boroda_ - Пятница, 10.06.2016, 14:17
 
Ответить
Сообщениев этой строке указывается имя, а не тип. Да и ".xlsm" даже в имени почему-то не добавляет
[moder]Излишнее цитирование запрещено Правилами форума. Удалил[/moder]

Автор - Хомка
Дата добавления - 10.06.2016 в 13:36
_Boroda_ Дата: Пятница, 10.06.2016, 14:18 | Сообщение № 7
Группа: Модераторы
Ранг: Экселист
Сообщений: 9377
Репутация: 3950 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Запишите сохранение любого файла Excel в нужном Вам формате макрорекодером и сдуйте код оттуда


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЗапишите сохранение любого файла Excel в нужном Вам формате макрорекодером и сдуйте код оттуда

Автор - _Boroda_
Дата добавления - 10.06.2016 в 14:18
Хомка Дата: Пятница, 10.06.2016, 14:56 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, Получается какая-то странная вещь :(
добавила свой код в BeforeSave и теперь открывается сперва мое окно для сохранения, потом стандартное. %) И если один раз сохранить то потом при очередном сохранении отображается только мое диалоговое окно. А так же по поводу формата. Пробовала уже брать то что выдает стандартный макрос при сохранении (FileFormat:=xlOpenXMLWorkbookMacroEnabled) он на него ругается :(

[vba]
Код

'ThisWorkbook.SaveAs( Filename:=AD & ".xlms"
'        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim AD As String
Dim fd As FileDialog
    AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = AD
'.FileFormat = xlOpenXMLWorkbookMacroEnabled
If .Show = 0 Then
'Else
.Execute
Cancel = False

End If
End With
Set fd = Nothing

Cancel = False

End Sub
[/vba]
 
Ответить
Сообщение_Boroda_, Получается какая-то странная вещь :(
добавила свой код в BeforeSave и теперь открывается сперва мое окно для сохранения, потом стандартное. %) И если один раз сохранить то потом при очередном сохранении отображается только мое диалоговое окно. А так же по поводу формата. Пробовала уже брать то что выдает стандартный макрос при сохранении (FileFormat:=xlOpenXMLWorkbookMacroEnabled) он на него ругается :(

[vba]
Код

'ThisWorkbook.SaveAs( Filename:=AD & ".xlms"
'        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim AD As String
Dim fd As FileDialog
    AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = AD
'.FileFormat = xlOpenXMLWorkbookMacroEnabled
If .Show = 0 Then
'Else
.Execute
Cancel = False

End If
End With
Set fd = Nothing

Cancel = False

End Sub
[/vba]

Автор - Хомка
Дата добавления - 10.06.2016 в 14:56
Manyasha Дата: Пятница, 10.06.2016, 16:37 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
Хомка,
указать тип файла (*.xmlt) ?

не поняла, что это за расширение, но xlOpenXMLWorkbookMacroEnabled(или 52) - это .xlsm.
Попробуйте использовать GetSaveAsFilename.
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    Dim AD As String
    Dim fd As FileDialog
    AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"
    Dim Filename
    Filename = Application.GetSaveAsFilename(AD, "Книга с поддержкой макросов, *.xlsm")
    Cancel = True
    If Filename <> False Then ActiveWorkbook.SaveAs Filename:=Filename, FileFormat:=52
    Application.EnableEvents = True
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеХомка,
указать тип файла (*.xmlt) ?

не поняла, что это за расширение, но xlOpenXMLWorkbookMacroEnabled(или 52) - это .xlsm.
Попробуйте использовать GetSaveAsFilename.
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    Dim AD As String
    Dim fd As FileDialog
    AD = ActiveSheet.Range("ИмяФайла").Value & ".xlsm"
    Dim Filename
    Filename = Application.GetSaveAsFilename(AD, "Книга с поддержкой макросов, *.xlsm")
    Cancel = True
    If Filename <> False Then ActiveWorkbook.SaveAs Filename:=Filename, FileFormat:=52
    Application.EnableEvents = True
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 10.06.2016 в 16:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Задавать свое имя файла при сохранении (Макросы/Sub)
Страница 1 из 11
Поиск:

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