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

Вход

Регистрация

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

 

= Мир MS Excel/Сохранение книги с учетом определенных параметров - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение книги с учетом определенных параметров (Макросы/Sub)
Сохранение книги с учетом определенных параметров
akatorginak Дата: Среда, 13.07.2022, 11:10 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Привет форумчане!

Осваиваю VBA понемногу и столкнулся со следующей задачей: нужно сохранять файл в выбираемую локацию с определенным именем файла. То есть стандартное окно сохранения SAVEAS, но где в строке названия уже прописано название файла, которое, при необходимости, можно отредактировать. (если такое вообще возможно %) )
Что смог родить из интерната и своими ограниченными знаниями:

[vba]
Код

If Not Application.Dialogs(xlDialogSaveAs).Show(Sheets("Техлист").Range("K2").Value & ".xlsx") Then
        MsgBox "Книга не сохранена! Требуется сохранение вручную.", vbExclamation
        End If
[/vba]
Но выдает стандартное окно для сохранения без названия файла. Буду очень рад, если сможете помочь.
[offtop]лет 7 на форуме не был, в свое время очень хорошо прокачал excel тут =)
 
Ответить
СообщениеПривет форумчане!

Осваиваю VBA понемногу и столкнулся со следующей задачей: нужно сохранять файл в выбираемую локацию с определенным именем файла. То есть стандартное окно сохранения SAVEAS, но где в строке названия уже прописано название файла, которое, при необходимости, можно отредактировать. (если такое вообще возможно %) )
Что смог родить из интерната и своими ограниченными знаниями:

[vba]
Код

If Not Application.Dialogs(xlDialogSaveAs).Show(Sheets("Техлист").Range("K2").Value & ".xlsx") Then
        MsgBox "Книга не сохранена! Требуется сохранение вручную.", vbExclamation
        End If
[/vba]
Но выдает стандартное окно для сохранения без названия файла. Буду очень рад, если сможете помочь.
[offtop]лет 7 на форуме не был, в свое время очень хорошо прокачал excel тут =)

Автор - akatorginak
Дата добавления - 13.07.2022 в 11:10
_Boroda_ Дата: Среда, 13.07.2022, 11:33 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Посмотрите вот здесь


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

Автор - _Boroda_
Дата добавления - 13.07.2022 в 11:33
RAN Дата: Среда, 13.07.2022, 11:33 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub Мяу()
    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = "D:\11111.xlsx"
        .Show
        .Execute
    End With
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub Мяу()
    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = "D:\11111.xlsx"
        .Show
        .Execute
    End With
End Sub
[/vba]

Автор - RAN
Дата добавления - 13.07.2022 в 11:33
akatorginak Дата: Среда, 13.07.2022, 12:02 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±


Спасибо!
Чуть модернизировал для себя:
[vba]
Код

Sub Мяу()
    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = Sheets("Техлист").Range("K2").Value
        .Show
        .Execute
    End With
End Sub
[/vba]
В ячейке K2 соответственно то имя файла, которое хочу
hands
 
Ответить
Сообщение
Спасибо!
Чуть модернизировал для себя:
[vba]
Код

Sub Мяу()
    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = Sheets("Техлист").Range("K2").Value
        .Show
        .Execute
    End With
End Sub
[/vba]
В ячейке K2 соответственно то имя файла, которое хочу
hands

Автор - akatorginak
Дата добавления - 13.07.2022 в 12:02
akatorginak Дата: Пятница, 15.07.2022, 09:39 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Форумчане!

Если кому не сложно, подскажите глупышу, можно ли как то доработать макрос, чтобы в открывающемся меню сохранения 1ым предлагаемым вариантом сохранения было расширение .xlsx
[vba]
Код
Sub Сохранение()

    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = Sheets("Техлист").Range("K2").Value & ".xlsx"
        .Show
        .Execute
    End With

End Sub
[/vba]

Попытался в своем варианте добавить & ".xlsx" - не работает :'(
 
Ответить
СообщениеФорумчане!

Если кому не сложно, подскажите глупышу, можно ли как то доработать макрос, чтобы в открывающемся меню сохранения 1ым предлагаемым вариантом сохранения было расширение .xlsx
[vba]
Код
Sub Сохранение()

    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = Sheets("Техлист").Range("K2").Value & ".xlsx"
        .Show
        .Execute
    End With

End Sub
[/vba]

Попытался в своем варианте добавить & ".xlsx" - не работает :'(

Автор - akatorginak
Дата добавления - 15.07.2022 в 09:39
_Boroda_ Дата: Пятница, 15.07.2022, 09:56 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я ссылку давал. Вы ее смотрели? Внимательно?


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

Автор - _Boroda_
Дата добавления - 15.07.2022 в 09:56
akatorginak Дата: Пятница, 15.07.2022, 10:31 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Я смог "родить" это:

[vba]
Код

Sub Срхранение2()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Sheets("ТехЛист").Range("K2").Value, _
             FileFilter:="Excel files(*.xlsm*),*.xlsm*", _
             FilterIndex:=2, _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If

    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=ThisWorkbook.FileFormat
End Sub
[/vba]

Но сохраняет вообще непонятно в каком формате файл %)


Сообщение отредактировал akatorginak - Пятница, 15.07.2022, 10:31
 
Ответить
СообщениеЯ смог "родить" это:

[vba]
Код

Sub Срхранение2()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Sheets("ТехЛист").Range("K2").Value, _
             FileFilter:="Excel files(*.xlsm*),*.xlsm*", _
             FilterIndex:=2, _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If

    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=ThisWorkbook.FileFormat
End Sub
[/vba]

Но сохраняет вообще непонятно в каком формате файл %)

Автор - akatorginak
Дата добавления - 15.07.2022 в 10:31
RAN Дата: Пятница, 15.07.2022, 10:47 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
У меня сохраняет нормально.
Поскольку файла нет, то и ответить нечего.
И вопрос - зачем вам диалог, если вы сохраняете с фиксированным именем из ячейки?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеУ меня сохраняет нормально.
Поскольку файла нет, то и ответить нечего.
И вопрос - зачем вам диалог, если вы сохраняете с фиксированным именем из ячейки?

Автор - RAN
Дата добавления - 15.07.2022 в 10:47
akatorginak Дата: Пятница, 15.07.2022, 11:02 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Я к сожалению, по политике конфиденциальности не могу ничего подгрузить вообще:(
У меня сохраняет нормально.
Ваш макрос работает нормально, но в диалоговом окне сохранения априори ставит Книга excel, а не Книга excel с поддержкой макросов, что вызывает множество проблем у операторов файла.
Диалог нужен, чтобы перед сохранением, при необходимости, можно было скорректировать имя файла и выбрать из стандартного меню сохранения путь к сохранению файла.
2ой Вариант макроса сохраняет файл с типом файла по концу названия файла, то есть насколько я понял, вообще не задает формат файла.
 
Ответить
СообщениеЯ к сожалению, по политике конфиденциальности не могу ничего подгрузить вообще:(
У меня сохраняет нормально.
Ваш макрос работает нормально, но в диалоговом окне сохранения априори ставит Книга excel, а не Книга excel с поддержкой макросов, что вызывает множество проблем у операторов файла.
Диалог нужен, чтобы перед сохранением, при необходимости, можно было скорректировать имя файла и выбрать из стандартного меню сохранения путь к сохранению файла.
2ой Вариант макроса сохраняет файл с типом файла по концу названия файла, то есть насколько я понял, вообще не задает формат файла.

Автор - akatorginak
Дата добавления - 15.07.2022 в 11:02
_Boroda_ Дата: Пятница, 15.07.2022, 11:09 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
открывающемся меню сохранения 1ым предлагаемым вариантом сохранения было расширение .xlsx

Кстати, я не понял - зачем вам сохранять книгу с макросами в xlsx?

Хорошо, вот с выбором
[vba]
Код
Sub ShowGetSaveAsDialod()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Range("K2").Value, _
             FileFilter:="Формат xlsx(*.xlsx),*.xlsx, Формат xlsm(*.xlsm),*.xlsm", _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If
    If Right(sToSavePath, 1) = "x" Then
        ff_ = 51
    Else
        ff_ = 52
    End If
    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=ff_
End Sub
[/vba]

Вот без выбора, сразу в xlsm
[vba]
Код
Sub tt()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Range("K2").Value, _
             FileFilter:="Формат xlsm(*.xlsm),*.xlsm", _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If
    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=52
End Sub
[/vba]

В К2 написано вот так (без расширения)
d:\Стереть\1854392


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

Кстати, я не понял - зачем вам сохранять книгу с макросами в xlsx?

Хорошо, вот с выбором
[vba]
Код
Sub ShowGetSaveAsDialod()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Range("K2").Value, _
             FileFilter:="Формат xlsx(*.xlsx),*.xlsx, Формат xlsm(*.xlsm),*.xlsm", _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If
    If Right(sToSavePath, 1) = "x" Then
        ff_ = 51
    Else
        ff_ = 52
    End If
    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=ff_
End Sub
[/vba]

Вот без выбора, сразу в xlsm
[vba]
Код
Sub tt()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Range("K2").Value, _
             FileFilter:="Формат xlsm(*.xlsm),*.xlsm", _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If
    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=52
End Sub
[/vba]

В К2 написано вот так (без расширения)
d:\Стереть\1854392

Автор - _Boroda_
Дата добавления - 15.07.2022 в 11:09
akatorginak Дата: Пятница, 15.07.2022, 11:30 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

зачем вам сохранять книгу с макросами в xlsx

Извиняюсь, перегрелся
Спасибо, буду пробовать
 
Ответить
Сообщение
зачем вам сохранять книгу с макросами в xlsx

Извиняюсь, перегрелся
Спасибо, буду пробовать

Автор - akatorginak
Дата добавления - 15.07.2022 в 11:30
akatorginak Дата: Пятница, 15.07.2022, 11:46 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

[vba]
Код
Sub Сохранение2()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
            InitialFileName:=Sheets("ТехЛист").Range("K2").Value, _
            FileFilter:="Формат xlsm(*.xlsm),*.xlsm", _
            FilterIndex:=2, _
            Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If

    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=52
End Sub
[/vba]

_Boroda_, ваш не работал, сравнил со своим, добавил FilterIndex:=2, _заработало ровно так, как и должно! Спасибо огромное!

Оффтоп вопрос - не в курсе куда написать по поводу восстановления старого профиля на сайте?
 
Ответить
Сообщение[vba]
Код
Sub Сохранение2()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
            InitialFileName:=Sheets("ТехЛист").Range("K2").Value, _
            FileFilter:="Формат xlsm(*.xlsm),*.xlsm", _
            FilterIndex:=2, _
            Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If

    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=52
End Sub
[/vba]

_Boroda_, ваш не работал, сравнил со своим, добавил FilterIndex:=2, _заработало ровно так, как и должно! Спасибо огромное!

Оффтоп вопрос - не в курсе куда написать по поводу восстановления старого профиля на сайте?

Автор - akatorginak
Дата добавления - 15.07.2022 в 11:46
_Boroda_ Дата: Пятница, 15.07.2022, 11:50 | Сообщение № 13
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
добавил FilterIndex:=

То есть Вы выбрали второй вариант из одного возможного. Ничего не удивляет? ))))

_Boroda_, ваш не работал

У меня работал, я проверяю обычно )))

куда написать по поводу восстановления старого профиля
Админу. Сергею


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

То есть Вы выбрали второй вариант из одного возможного. Ничего не удивляет? ))))

_Boroda_, ваш не работал

У меня работал, я проверяю обычно )))

куда написать по поводу восстановления старого профиля
Админу. Сергею

Автор - _Boroda_
Дата добавления - 15.07.2022 в 11:50
akatorginak Дата: Пятница, 15.07.2022, 11:56 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

У меня работал, я проверяю обычно )))

У меня функционал работал, но не выдавал предлагаемое имя файла. Добавил эту строчку - имя файла опять начало отображаться, все остальное сравнил - один в один yes
Ладно, вспоминая старый мем с голубем - работает: не трогай! hands
 
Ответить
Сообщение
У меня работал, я проверяю обычно )))

У меня функционал работал, но не выдавал предлагаемое имя файла. Добавил эту строчку - имя файла опять начало отображаться, все остальное сравнил - один в один yes
Ладно, вспоминая старый мем с голубем - работает: не трогай! hands

Автор - akatorginak
Дата добавления - 15.07.2022 в 11:56
RAN Дата: Пятница, 15.07.2022, 17:54 | Сообщение № 15
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
То есть Вы выбрали второй вариант из одного возможного. Ничего не удивляет? ))))

Воистину! Меня сие тоже крайне поразило..
предлагаем
[vba]
Код
FilterIndex:=1 '(или опущено)
[/vba]
получаем хрен по всей морде.
Саня, могёт быть ты прокомментишь?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
То есть Вы выбрали второй вариант из одного возможного. Ничего не удивляет? ))))

Воистину! Меня сие тоже крайне поразило..
предлагаем
[vba]
Код
FilterIndex:=1 '(или опущено)
[/vba]
получаем хрен по всей морде.
Саня, могёт быть ты прокомментишь?

Автор - RAN
Дата добавления - 15.07.2022 в 17:54
akatorginak Дата: Понедельник, 18.07.2022, 09:28 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Еще раз попробовал все вариации, работает только в таком виде как надо:
[vba]
Код
Sub Сохранение()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Sheets("Техлист").Range("K2").Value, _
             FileFilter:="Excel files(*.xlsm),*.xlsm", _
             FilterIndex:=2, _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If

    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=ThisWorkbook.FileFormat
End Sub
[/vba]
Или если последнюю строчку так прописать:
[vba]
Код
ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=52
[/vba]

Я очень поверхностно знаю VBA, самоучка так сказать, но уже понял за что отвечает:
FilterIndex


Согласен, в моем варианте немного бредово - но почему то работает только в таком варианте, без данной строки или со значением "1" не выдает название файла в форме сохранения, просто пустое место.
 
Ответить
СообщениеЕще раз попробовал все вариации, работает только в таком виде как надо:
[vba]
Код
Sub Сохранение()
    Dim sToSavePath
    sToSavePath = Application.GetSaveAsFilename( _
             InitialFileName:=Sheets("Техлист").Range("K2").Value, _
             FileFilter:="Excel files(*.xlsm),*.xlsm", _
             FilterIndex:=2, _
             Title:="Сохранить файл")
    If VarType(sToSavePath) = vbBoolean Then
        Exit Sub
    End If

    ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=ThisWorkbook.FileFormat
End Sub
[/vba]
Или если последнюю строчку так прописать:
[vba]
Код
ThisWorkbook.SaveAs Filename:=sToSavePath, FileFormat:=52
[/vba]

Я очень поверхностно знаю VBA, самоучка так сказать, но уже понял за что отвечает:
FilterIndex


Согласен, в моем варианте немного бредово - но почему то работает только в таком варианте, без данной строки или со значением "1" не выдает название файла в форме сохранения, просто пустое место.

Автор - akatorginak
Дата добавления - 18.07.2022 в 09:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение книги с учетом определенных параметров (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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