#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. Не знал, что это создаст такую новую рабочую книгу. Именно это я и имел в виду, спасибо.