从现有(未知名称)工作簿创build工作表的副本到一个新的(未知名称)工作簿

我有一个现有的工作簿,将被多个用户使用(谁将命名该工作簿唯一 – 我可以设置一个工作簿代号如果需要,但不知道如何做到这一点?)。

我需要创build一个macros来打开一个新的工作簿(这可能是我不知道的名字,因为它可能是“Book1”,“Book2”,“Book3”等),然后返回到原始工作簿macros存储,并复制几个(如果需要,可以一次做一个)表(我知道这些表的名称),并将其作为新工作表粘贴到我创build的新工作簿中。 macros不需要保存文件(事实上,最好不要这样做,因为我希望用户将用户最方便的位置保存到新的工作簿中)。

我试图展示macros将做什么,显示明显的问题,我不知道我创build/复制/粘贴到工作簿的名称。

任何帮助,非常感谢!

Sub CopySheetintoNewWorkbook() 'Macro opens new / blank workbook (name unknown?)' Workbooks.Add 'Macro goes back to original workbook where macro is saved (of which the name is unknown to the macro - ie, users can and will change it)' Windows("UnknownWorkbookName-1").Activate 'Macro goes to a sheet which can be named and will be known, so this is no problem' Sheets("KnownSheet").Select 'Macro creates a copy of the sheet and pastes it as a new sheet within the new, unknown named workbook' Application.CutCopyMode = False Sheets("KnownSheet").Copy Before:=Workbooks("UnknownWorkbookName-2").Sheets(1) End Sub 

我们想复制Sheet1Sheet2

这依赖于一个小窍门:

 Sub qwerty() Dim wb1 As Workbook, wbNEW As Workbook Set wb1 = ActiveWorkbook Sheets("Sheet1").Copy Set wbNEW = ActiveWorkbook wb1.Sheets("Sheet2").Copy after:=wbNEW.Sheets(1) End Sub 

当第一个.Copy被执行时,一个新的工作簿被创build并且成为ActiveWorkbook ……..其余的很容易。

编辑#1:

如果我们有一组要复制的工作表,那么我们可以创build一个工作表名称的数组,循环遍历数组,每次复制一个工作表:

 Sub qwerty() Dim wb1 As Workbook, wbNEW As Workbook Dim ary() As String, s As String, i As Long s = "Larry,Moe,Curly" ary = Split(s, ",") Set wb1 = ActiveWorkbook i = 1 For Each a In ary If i = 1 Then Sheets(a).Copy Set wbNEW = ActiveWorkbook Else wb1.Sheets(a).Copy after:=wbNEW.Sheets(1) End If i = 2 Next a wbNEW.Activate End Sub