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

Вход

Регистрация

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

 

= Мир MS Excel/Как сохранить лист в отдельный файл? - Мир MS Excel

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

Excel 2010
Добрый день! Подскажите, пожалуйста, как сохранить лист в отдельный файл с
1. заменой формулы на значение
2. что бы в сохранном файле отсутствовали макросы
3. что бы автоматически сохранялось на рабочий стол
4. что бы название созданного файла состояло из значений нескольких ячеек (к примеру A1,C1,I2)

Нужно для создания отчета на работе, подобную, почти подходящую формулу я нашел в рубрике ГОТОВЫЕ РЕШЕНИЯ но она дает название файла из названия листа, а хотелось бы, что бы название брало из ячеек.
Помогите, пожалуйста, отредактировать либо эту формулу, либо написать новую, а то я второй день пытаюсь, что-то там изменить но у меня не получается ибо не хватает знаний в области VBA :(

Формулу прилагаю (полностью скопирована из рубрики "Готовые решения"):
[vba]
Код

Sub Лист_в_файл() 'Сохранить текущий лист.
Dim List$, iPath$
          
iPath = "D:\Папка\папка\" ' конкретный адрес для сохранения нового файла
          
Application.ScreenUpdating = False
Application.DisplayAlerts = False
List = ActiveSheet.Name
Sheets(List).Copy
Sheets(List).UsedRange.Value = Sheets(List).UsedRange.Value
Sheets(List).Buttons.Delete 'Удаляем кнопки
'Sheets(List).DrawingObjects.Delete 'Удаляем все элементы
ActiveWorkbook.SaveAs iPath & List '& ".xls"
ActiveWorkbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Готово!"
End Sub
[/vba]


Сообщение отредактировал Bigimoot27 - Четверг, 05.03.2015, 13:23
 
Ответить
СообщениеДобрый день! Подскажите, пожалуйста, как сохранить лист в отдельный файл с
1. заменой формулы на значение
2. что бы в сохранном файле отсутствовали макросы
3. что бы автоматически сохранялось на рабочий стол
4. что бы название созданного файла состояло из значений нескольких ячеек (к примеру A1,C1,I2)

Нужно для создания отчета на работе, подобную, почти подходящую формулу я нашел в рубрике ГОТОВЫЕ РЕШЕНИЯ но она дает название файла из названия листа, а хотелось бы, что бы название брало из ячеек.
Помогите, пожалуйста, отредактировать либо эту формулу, либо написать новую, а то я второй день пытаюсь, что-то там изменить но у меня не получается ибо не хватает знаний в области VBA :(

Формулу прилагаю (полностью скопирована из рубрики "Готовые решения"):
[vba]
Код

Sub Лист_в_файл() 'Сохранить текущий лист.
Dim List$, iPath$
          
iPath = "D:\Папка\папка\" ' конкретный адрес для сохранения нового файла
          
Application.ScreenUpdating = False
Application.DisplayAlerts = False
List = ActiveSheet.Name
Sheets(List).Copy
Sheets(List).UsedRange.Value = Sheets(List).UsedRange.Value
Sheets(List).Buttons.Delete 'Удаляем кнопки
'Sheets(List).DrawingObjects.Delete 'Удаляем все элементы
ActiveWorkbook.SaveAs iPath & List '& ".xls"
ActiveWorkbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Готово!"
End Sub
[/vba]

Автор - Bigimoot27
Дата добавления - 05.03.2015 в 13:21
RAN Дата: Четверг, 05.03.2015, 14:04 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
List = ActiveSheet.Range("A1").Value
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
List = ActiveSheet.Range("A1").Value
[/vba]

Автор - RAN
Дата добавления - 05.03.2015 в 14:04
Wasilich Дата: Четверг, 05.03.2015, 15:41 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
[offtop]Андрей, придется еще раз мяукать. Ты не указал в каком месте "формулы" это вставить. :D [/offtop]
 
Ответить
Сообщение[offtop]Андрей, придется еще раз мяукать. Ты не указал в каком месте "формулы" это вставить. :D [/offtop]

Автор - Wasilich
Дата добавления - 05.03.2015 в 15:41
Hugo Дата: Четверг, 05.03.2015, 15:58 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
п.4 требует (теоретически и оочень часто практически) ещё одной обработки полученного значения - перед применением убить все символы, которые не могут быть в имени файла.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщениеп.4 требует (теоретически и оочень часто практически) ещё одной обработки полученного значения - перед применением убить все символы, которые не могут быть в имени файла.

Автор - Hugo
Дата добавления - 05.03.2015 в 15:58
antal10 Дата: Четверг, 05.03.2015, 17:14 | Сообщение № 5
Группа: Проверенные
Ранг: Участник
Сообщений: 58
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013
Так что ли?
К сообщению приложен файл: 5029425.xlsm (22.2 Kb)
 
Ответить
СообщениеТак что ли?

Автор - antal10
Дата добавления - 05.03.2015 в 17:14
Hugo Дата: Четверг, 05.03.2015, 17:19 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
antal10, знаете, бывают номера накладных типа 072/13...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщениеantal10, знаете, бывают номера накладных типа 072/13...

Автор - Hugo
Дата добавления - 05.03.2015 в 17:19
Bigimoot27 Дата: Четверг, 05.03.2015, 21:04 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, Спасибо, получилось hands
antal10, Спасибо, файл взял на вооружение ^_^
 
Ответить
СообщениеRAN, Спасибо, получилось hands
antal10, Спасибо, файл взял на вооружение ^_^

Автор - Bigimoot27
Дата добавления - 05.03.2015 в 21:04
vhow4ik Дата: Пятница, 05.02.2016, 10:20 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте, уважаемые форумчане.

Помогите решить такую проблему: есть файл, в котором на первом листе исходные данные и кнопка, на втором расчеты, на третьем - результат с формулами. Необходимо чтобы при нажатии кнопки создавалась папка "Двери" в текущей папке, где лежит этот файл (а если она есть, то сохранялось в нее), а имя файла бралось с листа 2 из ячеек a17 & b17. Сохраняться должен третий лист (он скрыт), формулы на нем нужно заменить на значения. После сохранения новая книга закрывается и выводится сообщение об удачном сохранении файла с присвоенным именем из ячеек a17 & b17.

Я понимаю что все это уже было описано и не один раз и на разных форумах, но там либо идет сохранение только текущего листа, либо нужный лист, но нет замены формул на значения и т.п. - короче немного не то как мне надо. Сам я пытаюсь уже неделю соединить части разных кодов методом тыка, но знаний по программированию в VBA, к сожалению, у меня нет, поэтому ничего стоящего не получается. Вот пример кода, взятого с разных форумов, но лист не хочет сохраняться с указанным именем (используется имя по умолчанию "Книга 2...Книга 3...). и также непонятно мне как сделать чтобы выскакивало сообщение о результате сохранения. Подскажите пожалуйста.

Sub Ведомость_1()

On Error Resume Next
Const REPORTS_FOLDER = "Двери\"
' название подпапки, в которую по-умолчанию будет предложено сохранить файл

MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
' создаём папку для файла, если её ещё нет

ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
' выбираем стартовую папку

Filename = Range("a17") & ("b17") & ".xls"
' вывод диалогового окна для запроса имени сохраняемого файла

If VarType(Filename) = vbBoolean Then Exit Sub
' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл

Dim Ar(), ArAll&(), Sh As Excel.Worksheet, n

Select Case Sheets(1).[Условие]
Case 1
Ar = Array(3)
Case Else
End Select

ReDim Preserve ArAll(0 To ThisWorkbook.Worksheets.Count - 1)
For Each Sh In ThisWorkbook.Worksheets
ArAll(n) = Sh.Index
n = n + 1
Next
ThisWorkbook.Worksheets(ArAll).Copy
Application.Volatile
Application.Calculate
Application.ScreenUpdating = False
For Each n In Ar
With ActiveWorkbook.Worksheets(n).UsedRange.Cells
.Value = .Value
End With
Next
Erase ArAll: n = 0
ReDim Preserve ArAll(0 To ThisWorkbook.Worksheets.Count - 1 - (UBound(Ar) + 1))
For Each Sh In ActiveWorkbook.Worksheets
If IsError(Application.Match(Sh.Index, Ar, 0)) Then
ArAll(n) = Sh.Index
n = n + 1
Else: If Sh.Visible = False Then Sh.Visible = True
End If
Next
ActiveWorkbook.Sheets(Ar(0)).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets(ArAll).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Dialogs(xlDialogSaveAs).Show

ActiveWorkbook.Close False
End Sub


Сообщение отредактировал vhow4ik - Пятница, 05.02.2016, 10:30
 
Ответить
СообщениеЗдравствуйте, уважаемые форумчане.

Помогите решить такую проблему: есть файл, в котором на первом листе исходные данные и кнопка, на втором расчеты, на третьем - результат с формулами. Необходимо чтобы при нажатии кнопки создавалась папка "Двери" в текущей папке, где лежит этот файл (а если она есть, то сохранялось в нее), а имя файла бралось с листа 2 из ячеек a17 & b17. Сохраняться должен третий лист (он скрыт), формулы на нем нужно заменить на значения. После сохранения новая книга закрывается и выводится сообщение об удачном сохранении файла с присвоенным именем из ячеек a17 & b17.

Я понимаю что все это уже было описано и не один раз и на разных форумах, но там либо идет сохранение только текущего листа, либо нужный лист, но нет замены формул на значения и т.п. - короче немного не то как мне надо. Сам я пытаюсь уже неделю соединить части разных кодов методом тыка, но знаний по программированию в VBA, к сожалению, у меня нет, поэтому ничего стоящего не получается. Вот пример кода, взятого с разных форумов, но лист не хочет сохраняться с указанным именем (используется имя по умолчанию "Книга 2...Книга 3...). и также непонятно мне как сделать чтобы выскакивало сообщение о результате сохранения. Подскажите пожалуйста.

Sub Ведомость_1()

On Error Resume Next
Const REPORTS_FOLDER = "Двери\"
' название подпапки, в которую по-умолчанию будет предложено сохранить файл

MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
' создаём папку для файла, если её ещё нет

ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
' выбираем стартовую папку

Filename = Range("a17") & ("b17") & ".xls"
' вывод диалогового окна для запроса имени сохраняемого файла

If VarType(Filename) = vbBoolean Then Exit Sub
' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл

Dim Ar(), ArAll&(), Sh As Excel.Worksheet, n

Select Case Sheets(1).[Условие]
Case 1
Ar = Array(3)
Case Else
End Select

ReDim Preserve ArAll(0 To ThisWorkbook.Worksheets.Count - 1)
For Each Sh In ThisWorkbook.Worksheets
ArAll(n) = Sh.Index
n = n + 1
Next
ThisWorkbook.Worksheets(ArAll).Copy
Application.Volatile
Application.Calculate
Application.ScreenUpdating = False
For Each n In Ar
With ActiveWorkbook.Worksheets(n).UsedRange.Cells
.Value = .Value
End With
Next
Erase ArAll: n = 0
ReDim Preserve ArAll(0 To ThisWorkbook.Worksheets.Count - 1 - (UBound(Ar) + 1))
For Each Sh In ActiveWorkbook.Worksheets
If IsError(Application.Match(Sh.Index, Ar, 0)) Then
ArAll(n) = Sh.Index
n = n + 1
Else: If Sh.Visible = False Then Sh.Visible = True
End If
Next
ActiveWorkbook.Sheets(Ar(0)).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets(ArAll).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Dialogs(xlDialogSaveAs).Show

ActiveWorkbook.Close False
End Sub

Автор - vhow4ik
Дата добавления - 05.02.2016 в 10:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как сохранить лист в отдельный файл? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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