Скопируйте несколько листов в другую книгу

#excel #vba #xlsx #worksheet

Вопрос:

У меня есть код, который скопирует лист, а затем создаст новую книгу, а затем вставит ее и изменит имя листа и название книги перед сохранением на рабочем столе.

Все, что делают вызываемые вспомогательные модули, — это переносят диапазоны данных с листа ввода на лист экспорта, который копируется (называется «Строки») для вставки в новую книгу.

Код используется в качестве кнопки, и до сих пор никакого объявления не требовалось.

 Sub UploadSheet()   Call TransposeHS  Call TransposeOrigin  Call TransposeValues    Application.ScreenUpdating = False   Path = CreateObject("WScript.Shell").specialfolders("Desktop")  Worksheets("Rows").Cells.Copy   Workbooks.Add (xlWBATWorksheet)  ActiveWorkbook.ActiveSheet.Paste  ActiveWorkbook.ActiveSheet.Name = "Rows"  ActiveWorkbook.SaveAs Filename:=Path amp; "" amp; "Upload" amp; ".xlsx"  ActiveWorkbook.Close SaveChanges:=True   Application.ScreenUpdating = True   MsgBox "Exported to Desktop"  End Sub  

Как настроить код для копирования более 2 листов вместо одного в новую книгу?

Комментарии:

1. Ваш опубликованный код не показывает (почти) ничего относящегося к делу… Нет никакого объявления переменной, ваш код вызывает три подстановки, о которых мы не можем знать, что они делают, вы ничего не говорите о втором листе (имя) и так далее. Я боюсь, что никто не сможет вам помочь, просто отвечая на ваш вопрос…

Ответ №1:

Создание новой книги с Workbooks.Add последующей вставкой слишком сложно.

Вызовите Copy рабочий лист (- ы) без указания каких-либо параметров; новая книга создается с помощью скопированного листа (- ов) и является ActiveWorkbook .

 Worksheets(Array("Rows", "SecondSheet")).Copy ActiveWorkbook.SaveAs Filename:=Path amp; "" amp; "Upload" amp; ".xlsx"  

Комментарии:

1. Не знал, что это создаст такую новую рабочую книгу. Именно это я и имел в виду, спасибо.