使用Excel VBA将工作表复制到新工作簿中,并对新工作簿进行更改

使用Excel VBA将工作表复制到新工作簿中,并对新工作簿进行更改,vba,excel,Vba,Excel,如果这是一篇重复的帖子,请提前道歉——我搜索了很长时间,没有找到任何解决我问题的方法。我有一个excel电子表格,我想复制到新工作簿中,然后在新工作簿上执行一些功能,删除复制内容的各个部分,同时保持原始内容不变 我的代码可以将工作表复制到新工作簿并保存,如下所示: Dim strFileName As String 'Copy sheet as a new workbook Sheets("Sheet1").Copy 'SaveAs strFileName = Application.Get

如果这是一篇重复的帖子,请提前道歉——我搜索了很长时间,没有找到任何解决我问题的方法。我有一个excel电子表格,我想复制到新工作簿中,然后在新工作簿上执行一些功能,删除复制内容的各个部分,同时保持原始内容不变

我的代码可以将工作表复制到新工作簿并保存,如下所示:

Dim strFileName As String

'Copy sheet as a new workbook
Sheets("Sheet1").Copy

'SaveAs
strFileName = Application.GetSaveAsFilename(ActiveWorkbook.Name) & "xlsx"
If strFileName = "False" Then Exit Sub 'User Canceled
ActiveWorkbook.SaveAs Filename:=strFileName
我的问题是,在创建新工作簿后,我想在何处放置代码,以及是否需要放置更多代码,指定我想在哪个工作簿或工作表中执行功能(可能是.Activate或.open?)。下面是我为删除不需要的数据而编写的代码,如果我在原始工作表中而不是在复制副本中运行这些数据,效果会很好:

'removes rows when criteria is met
x = 4
Do While Sheet1.Cells(x, 1).Value <> ""
    If (Sheet1.Cells(x, 1) = "Prospect") Or (Sheet1.Cells(x, 1) = "Lead") Then
    Sheet1.Rows(x).Delete
    Else
    x = x + 1
    End If
Loop

'removes rows when criteria is met
y = 4
Do While Sheet1.Cells(y, 5).Value <> ""
    If (Sheet1.Cells(y, 5) = "Non-exclusive") Then
    Sheet1.Rows(y).Delete
    Else
    y = y + 1
    End If
Loop

'removes columns
Sheet1.Columns("P:S").Delete
Sheet1.Columns("F").Delete
”在满足条件时删除行
x=4
Do While Sheet1.单元格(x,1).值“”
如果(表1.单元格(x,1)=“潜在客户”)或(表1.单元格(x,1)=“潜在客户”),则
表1.行(x).删除
其他的
x=x+1
如果结束
环
'在满足条件时删除行
y=4
不显示1.单元格(y,5).值“”
如果(1.单元格(y,5)=“非排他”),则
表1.行(y).删除
其他的
y=y+1
如果结束
环
'删除列
表1.栏(“P:S”)。删除
表1.栏(“F”)。删除

简言之,我如何让这些代码在我刚刚创建的工作表上工作?任何帮助都将非常感谢,如果我没有澄清什么,请随时询问

复制工作表后,设置对该工作表的引用,并在代码中使用该引用:

Dim wb as Workbook, sht as WorkSheet
Dim strFileName As String

'Copy sheet as a new workbook
ActiveWorkbook.Sheets("Sheet1").Copy

Set wb = ActiveWorkbook
Set sht = wb.Sheets(1)

'SaveAs
strFileName = Application.GetSaveAsFilename(wb.Name) & ".xlsx"
If strFileName = "False" Then Exit Sub 'User Canceled
wb.SaveAs Filename:=strFileName

'removes rows when criteria is met
x = 4
Do While sht.Cells(x, 1).Value <> ""
    If sht.Cells(x, 1) = "Prospect" Or sht.Cells(x, 1) = "Lead" Then
    sht.Rows(x).Delete
    Else
    x = x + 1
    End If
Loop

'removes rows when criteria is met
y = 4
Do While sht.Cells(y, 5).Value <> ""
    If sht.Cells(y, 5) = "Non-exclusive" Then
    sht.Rows(y).Delete
    Else
    y = y + 1
    End If
Loop

'removes columns
sht.Columns("P:S").Delete
sht.Columns("F").Delete
Dim wb作为工作簿,sht作为工作表
将strFileName设置为字符串
'将工作表复制为新工作簿
ActiveWorkbook.Sheets(“Sheet1”)。副本
设置wb=ActiveWorkbook
设置sht=工作表(1)
“萨维亚斯
strFileName=Application.GetSaveAsFilename(wb.Name)和“.xlsx”
如果strFileName=“False”,则退出“用户已取消”
wb.SaveAs文件名:=strFileName
'在满足条件时删除行
x=4
当短单元格(x,1)值为“”时执行
如果短单元格(x,1)=“潜在客户”或短单元格(x,1)=“领先”,则
第行(x).删除
其他的
x=x+1
如果结束
环
'在满足条件时删除行
y=4
当短单元格(y,5)时执行。值“”
如果短单元格(y,5)=“非独占”,则
第行(y).删除
其他的
y=y+1
如果结束
环
'删除列
第列(“P:S”)。删除
第列(“F”)。删除

这本书可能重复,非常好,谢谢Tim!唯一的一件事是,由于某些原因,我的“另存为”无法正常工作-它会弹出“另存为”框,我在其中键入所需的文件名和保存位置,但工作簿不会保存,新工作簿仍保留默认名称“Book。注意到有什么可能是错误的吗?在我添加工作表引用之前,它是有效的。忘了提及,在为行添加工作表引用时,您意外地遗漏了一个括号:如果有人引用我的代码,则sht.Cells(x,1)=“Prospect”)可能要添加它。完美!我注意到我的SaveAs部分有一个错误:我不应该在追加文件类型时包含“.”,因为它当前保存为test1..xlsx,但这不是什么大问题。再次感谢。