我有一些复制数据的代码,然后我希望它创建一个新工作簿,并将复制的数据粘贴到新工作簿中。目前代码使用
ActiveSheet.Range("A1").PasteSpecial
等等,如果新创建的工作簿是活动工作表,那么这很好,但如果不是,那么显然不起作用。这是整个潜艇(带有一些
stop
标记,因为我一直在调试它):
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
循环创建新工作簿时,我想创建一个引用新工作簿的变量,然后我可以使用该变量将数据粘贴到正确的位置,或者类似的地方,以替换
ActiveSheet.Paste
一点我如何做到这一点?
编辑:我使用了类似答案中的信息
here
所以我的代码现在看起来像这样:
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
但是现在Excel在我选择保存文件夹后崩溃了。这有明显的原因吗?