Excel VBA:在新工作簿中保存多个工作表

时间:2015-01-04 17:09:51

标签: excel excel-vba 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

没用。我尝试了从开头和结尾等添加和删除引号的不同选项。我找到了从字符串变量引用一个页面的主题,但是在我的案例中从未涉及过多个页面。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

这个想法很合理,但问题是:

Array(Pgs)

将创建一个如下所示的索引数组:

Array[0] = "a1", "a2"

因此,除非您的工作表名为"a1", "a2",否则无效。

但是,这应该有效:

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

因为Split函数将返回一个用逗号分隔的数组。在这种情况下,Split(Pgs)将具有如下数组:

  • 数组[0] = a1
  • 数组[1] = a2