2015-01-04 5 views
3

Я ищу способ сохранить список рабочих листов в новой книге. Это хорошо работало:Excel VBA: сохранение нескольких листов в новой книге

ThisWorkbook.Sheets(Array("a1", "a2")).Copy 
ActiveWorkbook.SaveAs Filename:="myFile.xlsx", FileFormat:=51 

Однако список рабочих листов всегда отличается, поэтому я выпустил строку переменной Pgs с текстом в скобках "a1", "a2" в этом случае.

Так это выглядело так:

ThisWorkbook.Sheets(Array(Pgs)).Copy 
ActiveWorkbook.SaveAs Filename:="myFile.xlsx", FileFormat:=51 

Не работает. Я пробовал разные варианты с добавлением и удалением кавычек из начального и конечного ect. Я нашел темы, в которых упоминается одна страница из строковой переменной, но не так много страниц, как в моем случае.

Любые предложения?

ответ

3

Идея звук, но проблема заключается в следующем:

Array(Pgs) 

Будет ли создать единый массив индекса, который выглядит следующим образом:

Так что, если ваш лист не назван "a1", "a2", это будет не работа.

Тем не менее, это должно работать:

Pgs = "a1,a2" 
ThisWorkbook.Sheets(Split(Pgs, ",")).Copy 

Поскольку функция Split будет возвращать массив сломанный друг от друга запятой. В этом случае Split(Pgs) будет иметь массив как:

  • Array [0] = a1
  • Array [1] = a2
+0

спасибо! Должно сработать. –

+0

Я сделал пару модификаций, но в целом сделал, как вы написали. Отлично! –

+1

@ MārisBrants - Рад помочь. Пожалуйста, отметьте как ответ, если это решит вашу проблему. Приветствия. –

Смежные вопросы