【发布时间】:2017-12-08 16:01:58
【问题描述】:
我有一些复制一些数据的代码,然后我希望它创建一个新工作簿并将复制的数据粘贴到新工作簿中。目前,代码使用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 会崩溃。这有明显的原因吗?
【问题讨论】:
-
dim wbtemp as workbook和set wbtemp = .Workbooks.Add