VBA如何解决excel创build新表单地图1时的问题,而是用map2,map 3等进一步统计

在“1工作簿”的“同一活动会话”中,我遇到了一个问题,我不得不通过按下不同的工作簿和我写的代码来将一些(几个)工作表导出到不同的目录中。 问题是,Excel是自动给出新的地图的名称,例如,当第一个工作簿已经创build它会自动调用它的地图1,第二个工作簿将调用地图2,第三等..有没有办法让VBA还是参照新创build的地图,而不参考地图1? 在代码过程中,我必须引用新的映射(在我的工作簿的每个工作表中),但是现在我必须将它们全部命名为映射1(在我的代码中)。当我closures主工作簿并且再次打开,但这不是它应该的工作方式。 我可以input一些DIM设置并参考新创build的工作簿吗? 我相信这个问题在之前没有问过。 日Thnx …

我试图简化代码,使其有点可以理解。 实际上,我应该从这本书翻到WbNew。 我希望我能够清楚地说明我的问题。 我也尝试了一些build议的设置。

Sub Testing Macro() Dim wbNew as Workbook ' Testing Macro 'How can I command to switch over workbooks without counting the excelnumbers of workbooks? 'switching and savings are not working at the moment. 'we always start from Thisworkbook. ' This workbook is the original workbook 'Wbnew should be the new created Workbook (each new created and active Wb of course) , the new Wb will be closed after process ThisWorkbook.Sheets("SPECIFIC").Activate Range("A1:AS291").Select Selection.copy Set wbNew = Workbooks.Add Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ThisWorkbook.Sheets("SPECIFIC").Activate ActiveSheet.Shapes.Range(Array("Picture 1")).Select Selection.copy Wbnew.Activate ActiveSheet.Paste Application.CutCopyMode = False WbNew.Activate --> some formulas here With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With Application.PrintCommunication = True ActiveSheet.PageSetup.PrintArea = "" Application.PrintCommunication = False With ActiveSheet.PageSetup -->some page setting here End With Application.PrintCommunication = True WbNew.SaveAs Filename:= _ ThisWorkbook.Path & "\Path\" & ".xlsx" FileFormat = xlOpenXMLWorkbook ActiveWindow.Close End Sub 

每当创build一个新的Workbook (您称为Map)时,该Workbook对象就可以被捕获。

正如您所看到的,新的Workbook将获得焦点,因此在Copy单个工作Sheet Copy到新的Workbook之后,您可以通过以下方式捕获该新对象:

 Dim wbNew as Workbook '... OTHER CODE Sheet1.Copy 'Or similar code you use to separate your Sheet Set wbNew = ActiveWorkbook 

或者在您的修改代码中:

 Set wbNew = Workbooks.Add 

然后你可以用这个对象做什么你想要的,重命名/ SaveClose ,添加更多的表,操纵其内容,检索其Name

 MsgBox wbNew.Name wbNew.Save wbNew.Close 

祝你好运