Страницы: 1
RSS
Как работать с копией листа?, Требуется скопировать лист в новую книгу, зазначить, сохранить и закрыть
 
Добрый вечер, форумчане.
Подскажите, как совершать манипуляции с копией листа?
Пока получается только задействовать активную книгу, что не есть хорошо, она должна оставаться целой, как шаблон.
Нужно вынести лист в отдельную книгу, зазначить сумму, сохранить и закрыть.
Пример прилагаю.
Код
Sub RandW()
Dim wb As Workbook
Dim s As Worksheet
Dim AW As Window
Set wb = ActiveWorkbook
Set AW = ActiveWindow
Application.DisplayAlerts = False
'преобразование формул в значения на текущем листе
  ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
 On Error Resume Next
 
  For Each s In Sheets
    If Not s Is ActiveSheet Then s.Visible = xlSheetVisible: s.Delete
  Next
 ' Application.Quit
ActiveWorkbook.SaveCopyAs wb.Path & "\" & Range("B1") & Range("B2") & ActiveSheet.Name & ".xls"

  Application.DisplayAlerts = True
End Sub
 
Цитата
Maayun написал:
зазначить сумму
Это что-то новенькое, как понимать?
 
Цитата
Андрей_26 написал:
как понимать?
Лист - зазнайка  :D .
Преобразовать в значения по всей видимости.
По вопросам из тем форума, личку не читаю.
 
БМВ,так точно, перевести в значения, модный и молодёжный слэнг - "зазначить"
 
Maayun,
Цитата
Нужно вынести лист в отдельную книгу, зазначить сумму, сохранить и закрыть.
Код
Sub Kopija()
Dim ListTotal As Worksheet
  Set ListTotal = ThisWorkbook.Worksheets("Общий")
   ListTotal.Copy    'создается новая книга
     ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value

   'сохраняйте новую книгу по нужному пути и закрывайте
End Sub
 
Kuzmich, а нельзя ли прописать то, с каким именем этот лист будет сохраняться?
 
Maayun,
понимаете чем корявее сформулирован вопрос тем неожиданнее будут ответы на него
и однозначно, если вы задаете какой-то один вопрос, а в голове прокручиваете еще десяток вариантов к нему, очень наивно, что в след. сообщении вы найдете ответы на все сопутствующие вопросы, которые дополнительно крутились у вас в голове, дай бог чтобы угадали, как на основной вопрос ответить
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
с каким именем этот лист будет сохраняться?
Это не лист, а новая книга
Код
Sub Kopija()
Dim ListTotal As Worksheet
Dim iPath As String
  iPath = ThisWorkbook.Path
  Set ListTotal = ThisWorkbook.Worksheets("Общий")
   ListTotal.Copy    'создается новая книга
     ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
     ActiveWorkbook.SaveAs iPath & "\" & Range("B1") & Range("B2") & ActiveSheet.Name & ".xls"
     ActiveWorkbook.Close
End Sub
Изменено: Kuzmich - 29.12.2019 21:17:21
 
Цитата
Kuzmich написал:
Это не лист, а новая книга
Ну почему? - в книге ведь есть лист )) Может именно его нужно менять (продолжаем субботнюю угадайку):
Код
ActiveSheet.Name = "Новое имя"
 
Юрий М,
ТС писал
Цитата
Нужно вынести лист в отдельную книгу, зазначить сумму, сохранить и закрыть.
 
Цитата
Maayun написал:
прописать то, с каким именем этот лист будет сохраняться?
"Вынесли" этот лист в новую книгу и нужно дать ему другое имя - почему нет? )
Но Игорь прав: нет в вопросе конкретики..
 
Прошу прощения за корявое ТЗ, не знала, что когда создаётся копия листа, это фактически книга.
Kuzmich, спасибо, то что,надо.
Путаница вызвана тем, что изначально меня просили, чтобы книга целиком сохранялась с названием текущего листа, значения вместо формул и удалялись остальные листы, потому что если вынести в новую книгу сразу конкретный лист, программа не принимает этот формат.
 
Цитата
Maayun написал:
не знала, что когда создаётся копия листа, это фактически книга
и не удивительно что вы этого не знали, потому что фактически это не так
копия листа фактически это копия листа, и куда он будет скопирован это следующий вопрос решение которого ОЧЕНЬ сильно зависит от того, где вам нужна эта копия.
копия листа не ОБЯЗАТЕЛЬНО создается в новую книгу, а может быть скопирован КУДА УГОДНО где уместно наличие листа Excel

а путаница возникает из-за того, что вместо того, чтобы обьяснить что за задачу вы решаете (что есть на старте, что нужно получить в итоге) вы сначала принимаете план действий, который хромает на обе ноги, потом пытаетесь со всем этим прийти к результату.
и возникают темы:
Цитата
Maayun написал:
Как работать с копией листа?
на которую так и хочется ответить: работа с копией листа ничем не отличается от работы с оригиналом листа и точно также ничем не отличается от работы со всеми остальными листами, с которыми вам приходилось работать до этого.

это вместо того чтобы спросить "как сохранить лист в новую книгу?"
и уточнить несколько конкретных вопросов в процессе этого копирования:
1. какой лист скопировать
2. как его назвать в новой книге
3. ваш конкретный вопрос: формулы сохранить как значения
4. что делать с новой книгой
- бросить как есть
- сохранить с определенным именем в определенную папку
- закрыть
- и т.д. и т.п.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, я всё прекрасно понимаю, но в том то и дело, что мне нужно было знать не как совершить эти действия, а как обратиться к объекту, который получается в результате работы продедуры sheets.copy. Как только узнала, получился тот макрос, который я хотела. Оставлю здесь, как сохранить выбранные листы с определённым названием в отдельные книги с последующим их закрытием.

Код
Sub primer()
Dim s As Worksheet
Dim iPath As String

  iPath = ThisWorkbook.Path
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
      Dim AW As Window
    Set AW = ActiveWindow
    For Each s In AW.SelectedSheets
        Set TempWindow = AW.NewWindow
        s.Copy
     ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
     ActiveWorkbook.SaveAs iPath & "\" & Range("B3") & Range("B2") & ActiveSheet.Name & ".xls", FileFormat:=56
     ActiveWorkbook.Close
      TempWindow.Close
     Next
  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
End Sub
Страницы: 1
Наверх