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

Вход

Регистрация

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

 

= Мир MS Excel/Как написать макрос, который будет сохранять лист отдельно? - Мир MS Excel

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

Excel 2003
Как правильно написать макрос, чтобы при выполнении которого сохранялись 5 из 6 листов?

Кратко задача всего 6 листов один из них форма ввода данных, остальные уже печатные формы их необходимо сохранять отдельно для того чтобы другие пользователи могли их просматривать, необходимо чтобы при сохранении файла можно было выбирать место куда сохранить, а так же название конечного файла соответствовало названию листа.
И еще чтобы при последующем открытии этих файлов не выскакивало такое окно


Заранее всем благодарен кто ответит!
 
Ответить
СообщениеКак правильно написать макрос, чтобы при выполнении которого сохранялись 5 из 6 листов?

Кратко задача всего 6 листов один из них форма ввода данных, остальные уже печатные формы их необходимо сохранять отдельно для того чтобы другие пользователи могли их просматривать, необходимо чтобы при сохранении файла можно было выбирать место куда сохранить, а так же название конечного файла соответствовало названию листа.
И еще чтобы при последующем открытии этих файлов не выскакивало такое окно


Заранее всем благодарен кто ответит!

Автор - zamallexx
Дата добавления - 25.10.2013 в 01:14
KuklP Дата: Пятница, 25.10.2013, 02:20 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Во-первых тема создана не в той ветке форума. А чтоб не выскакивало такое окно, меняйте формулы на значения во время копирования листов.
P.S. И вообще, почитайте Правила. Эта Ваша тема - сплошное нарушение.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Пятница, 25.10.2013, 02:21
 
Ответить
СообщениеВо-первых тема создана не в той ветке форума. А чтоб не выскакивало такое окно, меняйте формулы на значения во время копирования листов.
P.S. И вообще, почитайте Правила. Эта Ваша тема - сплошное нарушение.

Автор - KuklP
Дата добавления - 25.10.2013 в 02:20
AndreTM Дата: Пятница, 25.10.2013, 02:38 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Да уж, и точно, не в той ветке :) Но это, пожалуй, единственное нарушение, поскольку вопрос всё же более общий, и конкретного примера не требует :D

Создайте модуль, поместите туда код:
[vba]
Код
Sub SaveActiveSheetWithValuesAndFormats()
' Сохранить лист в отдельную книгу, сохранить только значения и оформление
     Dim sh As Worksheet, wbNew As Workbook, cFileName
     Set sh = ActiveSheet
     cFileName = Application.GetSaveAsFilename(sh.Name, "Книга Microsoft Office Excel (*.xls), *.xls")
     If cFileName = False Then Exit Sub
     Application.ScreenUpdating = False
     ' Копируем лист (при этом создается новый файл с этим листом)
     sh.Copy
     Set wbNew = ActiveWorkbook
     ' Заменяем формулы значениями
     With wbNew.Sheets(1).UsedRange.Cells
         .Value = .Value
     End With
     ' Сохраняем файл
     Application.DisplayAlerts = False
     wbNew.SaveAs Filename:=(cFileName), FileFormat:=xlNormal
     ' Закрываем файл и возвращаемся в начало
     wbNew.Close
     Application.DisplayAlerts = True
     Application.ScreenUpdating = True
     sh.Activate
End Sub
[/vba]
И запускайте макрос с любого листа, который нужно сохранить.
Можете допилить его на предмет проверки только нужных имён листов или запуска с параметром-именем листа...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеДа уж, и точно, не в той ветке :) Но это, пожалуй, единственное нарушение, поскольку вопрос всё же более общий, и конкретного примера не требует :D

Создайте модуль, поместите туда код:
[vba]
Код
Sub SaveActiveSheetWithValuesAndFormats()
' Сохранить лист в отдельную книгу, сохранить только значения и оформление
     Dim sh As Worksheet, wbNew As Workbook, cFileName
     Set sh = ActiveSheet
     cFileName = Application.GetSaveAsFilename(sh.Name, "Книга Microsoft Office Excel (*.xls), *.xls")
     If cFileName = False Then Exit Sub
     Application.ScreenUpdating = False
     ' Копируем лист (при этом создается новый файл с этим листом)
     sh.Copy
     Set wbNew = ActiveWorkbook
     ' Заменяем формулы значениями
     With wbNew.Sheets(1).UsedRange.Cells
         .Value = .Value
     End With
     ' Сохраняем файл
     Application.DisplayAlerts = False
     wbNew.SaveAs Filename:=(cFileName), FileFormat:=xlNormal
     ' Закрываем файл и возвращаемся в начало
     wbNew.Close
     Application.DisplayAlerts = True
     Application.ScreenUpdating = True
     sh.Activate
End Sub
[/vba]
И запускайте макрос с любого листа, который нужно сохранить.
Можете допилить его на предмет проверки только нужных имён листов или запуска с параметром-именем листа...

Автор - AndreTM
Дата добавления - 25.10.2013 в 02:38
zamallexx Дата: Пятница, 25.10.2013, 21:29 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
AndreTM, Спасибо Вам очень помогло, но вот разобраться не могу как сделать чтобы сохранялись несколько листов, не подскажите?
 
Ответить
СообщениеAndreTM, Спасибо Вам очень помогло, но вот разобраться не могу как сделать чтобы сохранялись несколько листов, не подскажите?

Автор - zamallexx
Дата добавления - 25.10.2013 в 21:29
RAN Дата: Пятница, 25.10.2013, 21:50 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А макрорекордер спросить?
[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'

'
     Sheets(Array("Лист1", "Лист2")).Copy
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 25.10.2013, 21:51
 
Ответить
СообщениеА макрорекордер спросить?
[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'

'
     Sheets(Array("Лист1", "Лист2")).Copy
End Sub
[/vba]

Автор - RAN
Дата добавления - 25.10.2013 в 21:50
AndreTM Дата: Пятница, 25.10.2013, 22:17 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
разобраться не могу как сделать чтобы сохранялись несколько листов

Можете допилить его на предмет ... запуска с параметром-именем листа
Затем поправить код:
[vba]
Код
Sub SaveActiveSheetWithValuesAndFormats()
        Dim sh As Worksheet, wbNew As Workbook, cFileName
        Set sh = ActiveSheet
[/vba]
[vba]
Код
Sub SaveActiveSheetWithValuesAndFormats(Optional sh As Worksheet)
        Dim wbNew As Workbook, cFileName
        If sh Is Nothing Then Set sh = ActiveSheet
[/vba]Ну и на своей кнопке в эвенте - перечислите вызов процедуры нужное количество раз с нужными листами...

Вот только одно непонятно - раз вы захотели интерактив при сохранении (раз требуется у юзера запросить имя файла) - то зачем делать массовое сохранение? Тут уж либо так, либо этак... А сохранение формы (один лист - в один файл, что и делает исходная процедура) может вызывать и сам пользователь, запустив этот макрос (кнопочкой на листе/юзерформе/риббоне/etc)


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Пятница, 25.10.2013, 22:21
 
Ответить
Сообщение
разобраться не могу как сделать чтобы сохранялись несколько листов

Можете допилить его на предмет ... запуска с параметром-именем листа
Затем поправить код:
[vba]
Код
Sub SaveActiveSheetWithValuesAndFormats()
        Dim sh As Worksheet, wbNew As Workbook, cFileName
        Set sh = ActiveSheet
[/vba]
[vba]
Код
Sub SaveActiveSheetWithValuesAndFormats(Optional sh As Worksheet)
        Dim wbNew As Workbook, cFileName
        If sh Is Nothing Then Set sh = ActiveSheet
[/vba]Ну и на своей кнопке в эвенте - перечислите вызов процедуры нужное количество раз с нужными листами...

Вот только одно непонятно - раз вы захотели интерактив при сохранении (раз требуется у юзера запросить имя файла) - то зачем делать массовое сохранение? Тут уж либо так, либо этак... А сохранение формы (один лист - в один файл, что и делает исходная процедура) может вызывать и сам пользователь, запустив этот макрос (кнопочкой на листе/юзерформе/риббоне/etc)

Автор - AndreTM
Дата добавления - 25.10.2013 в 22:17
shebelme Дата: Понедельник, 06.10.2014, 10:22 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Подскажите пожалуйста как изменить код макроса что бы он по умолчанию сохранял файл в указанную папку
 
Ответить
СообщениеПодскажите пожалуйста как изменить код макроса что бы он по умолчанию сохранял файл в указанную папку

Автор - shebelme
Дата добавления - 06.10.2014 в 10:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как написать макрос, который будет сохранять лист отдельно? (Формулы)
  • Страница 1 из 1
  • 1
Поиск:

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