gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:32:40 25 4
gpt4 key购买 nike

我有一些复制一些数据的代码,然后我希望它创建一个新工作簿并将复制的数据粘贴到新工作簿中。目前代码使用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 wbNew as Workbook

然后在你的循环内......
    With CreateObject("Excel.Application")
Set wbNew = .Workbooks.Add
.Visible = True
End With
wbNew.WorkSheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues

关于VBA 试图指定一个新创建的工作簿而不是事件工作簿(将一些数据粘贴到新工作簿中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com