Добрый день. Есть необходимость при сохранении файла указывать необходимое имя файла в диалоговом окне. И так что бы это срабатывало при "Сохранить", "Сохранить как" и "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
Сходите в макросы (Альт+F11) - ВБАПроджект (Контрл+R) - даблклик на "ЭтаКнига" для нужного файла. Вылезет окошко с двумя вып. списками наверху. В левом выберите Workbook (Все то, что напишется в этом окошке автоматически, потом сотрите), в правом выберите BeforeSave, а вот то, что напишется в окошке теперь, как раз Вам и нужно. Между Sub и End Sub и пишите свой код. Вот справка https://msdn.microsoft.com/en-us....5).aspx
Сходите в макросы (Альт+F11) - ВБАПроджект (Контрл+R) - даблклик на "ЭтаКнига" для нужного файла. Вылезет окошко с двумя вып. списками наверху. В левом выберите Workbook (Все то, что напишется в этом окошке автоматически, потом сотрите), в правом выберите BeforeSave, а вот то, что напишется в окошке теперь, как раз Вам и нужно. Между Sub и End Sub и пишите свой код. Вот справка https://msdn.microsoft.com/en-us....5).aspx_Boroda_
в этой строке указывается имя, а не тип. Да и ".xlsm" даже в имени почему-то не добавляет [moder]Излишнее цитирование запрещено Правилами форума. Удалил[/moder]
в этой строке указывается имя, а не тип. Да и ".xlsm" даже в имени почему-то не добавляет [moder]Излишнее цитирование запрещено Правилами форума. Удалил[/moder]Хомка
Сообщение отредактировал _Boroda_ - Пятница, 10.06.2016, 14:17
_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
не поняла, что это за расширение, но 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
не поняла, что это за расширение, но 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