VBA试图指定一个新创build的工作簿而不是活动工作簿(将一些数据粘贴到新工作簿中)

我有一些代码复制一些数据,然后我想要它创build一个新的工作簿,并将复制的数据粘贴到新的工作簿。 目前代码使用ActiveSheet.Range("A1").PasteSpecial等,这是好的,如果新创build的工作簿是活动表,但如果它不是很明显不工作。 这里是整个sub(有一些stop标记,因为我一直在debugging它):

 Sub ExportToCSV() Dim ws As Worksheet, xFolder As String, xName As String Dim InitialFoldr$ InitialFoldr$ = "L:\107xxx\1077898 A34 Oxford junctions 1718\200 M & A" MsgBox ("Choose where to save the Paramics demands") xFolder = GetFolder(InitialFoldr$) For Each ws In ThisWorkbook.Worksheets If ws.Name Like "*PDMND" Then xName = ws.Name ws.Range("BJ4:CK82").Copy 'Stop With CreateObject("Excel.Application") .Workbooks.Add .Visible = True End With ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues Stop ActiveWorkbook.SaveAs Filename:=xFolder + "\" + xName + ".csv", FileFormat:=xlCSV, CreateBackup:=False Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End If 'Stop Next End Sub 

with循环创build新的工作簿之后,我想创build一个引用新工作簿的variables,然后我可以使用该variables将数据粘贴到正确的位置 – 或类似于此 – 来replaceActiveSheet.Paste位。 我如何做到这一点?

编辑:我在这里用类似的答案中的信息,所以我的代码现在看起来像这样:

 xFolder = GetFolder(InitialFoldr$) For Each ws In ThisWorkbook.Worksheets If ws.Name Like "*PDMND" Then xName = ws.Name ws.Range("BJ4:CK82").Copy Set oWb = Workbooks.Add oWb.Range("A1").PasteSpecial Paste:=xlPasteValues Stop 

但现在Excelselect保存文件夹后,崩溃没有失败。 这是否有明显的原因?

在创build新工作簿时,保存工作簿对象,以便稍后可以引用它…如下所示:

在开始循环之前,添加:

  Dim wbNew as Workbook 

然后在你的循环里面…

  With CreateObject("Excel.Application") Set wbNew = .Workbooks.Add .Visible = True End With wbNew.WorkSheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues