Excel 复制/粘贴单元格&;价值

Excel 复制/粘贴单元格&;价值,excel,copy-paste,vba,Excel,Copy Paste,Vba,我想将单元格中包含值/公式的所有工作表复制/粘贴到另一个新工作簿中 这段代码只是复制了第一个ws,而不是所有其他ws。如何确保所有的ws都被复制和粘贴,而不将ws中的所有名称写入vba代码 Sub CopyPaste() Dim ws As Worksheet, wb As Workbook Set ws = ActiveSheet Set wb = Workbooks.Add(xlWBATWorksheet) ws.Range("A1:G10").Copy wb.Sheets(1).Range

我想将单元格中包含值/公式的所有工作表复制/粘贴到另一个新工作簿中

这段代码只是复制了第一个ws,而不是所有其他ws。如何确保所有的ws都被复制和粘贴,而不将ws中的所有名称写入vba代码

Sub CopyPaste()
Dim ws As Worksheet, wb As Workbook
Set ws = ActiveSheet
Set wb = Workbooks.Add(xlWBATWorksheet)
ws.Range("A1:G10").Copy
wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End Sub
您可以尝试以下操作:

Sub CopyPaste()

    Dim aSheet As Worksheet
    Dim workbook As workbook
    Dim index As Integer

    Set workbook = Workbooks.Add(xlWBATWorksheet)

    For Each aSheet In Worksheets

        aSheet.Range("A1:G10").Copy

        workbook.Sheets(index).Range("A1").PasteSpecial Paste:=xlPasteFormulasAndNumberFormats

        index = index + 1

        Application.CutCopyMode = False

    Next aSheet


End Sub

我刚给你看了一眼,这似乎很管用:

学分:

Dim WBN作为工作簿,WBC作为工作簿,WB作为工作簿
将WS设置为字符串
将SHT变暗为工作表
设置WBN=工作簿。添加
对于应用程序中的每个WB。工作簿
如果WB.Name WBN.Name那么
对于WB.工作表中的每个SHT
SHT.Copy After:=WBN.Sheets(WBN.Worksheets.Count)
WBN.Sheets(WBN.Worksheets.Count).Name=Left(WB.Name,30-Len(SHT.Name))&“-”和SHT.Name
下一步
如果结束
下一个WB
Application.DisplayAlerts=False
WBN.Sheets(数组(“Sheet1”、“Sheet2”、“Sheet3”)。删除
WBN.Application.DisplayAlerts=True

所以我假设您将保存第二个工作簿以便命名?因此,只需在要保存路径的下方添加路径,它现在也保留了图纸名称。 我不知道你为什么会遇到调试器错误,它对我来说很好,试试这段代码,看看你是否仍然能得到它

Sub newworkbook()
Dim WBN As workbook, WBC As workbook, WB As workbook
Dim WS As String
Dim SHT As Worksheet

Set WBN = Workbooks.Add

For Each WB In Application.Workbooks

If WB.Name <> WBN.Name Then
For Each SHT In WB.Worksheets
    SHT.Copy After:=WBN.Sheets(WBN.Worksheets.Count)
    WBN.Sheets(WBN.Worksheets.Count).Name = (SHT.Name) & " "
Next SHT
End If
Next WB
Application.DisplayAlerts = False
WBN.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
WBN.Application.DisplayAlerts = True
ActiveWorkbook.SaveAs "C:\YOURPATH\timetable_v2.xls" 'change path to whatever
End Sub
子新工作簿()
将WBN作为工作簿、WBC作为工作簿、WB作为工作簿
将WS设置为字符串
将SHT变暗为工作表
设置WBN=工作簿。添加
对于应用程序中的每个WB。工作簿
如果WB.Name WBN.Name那么
对于WB.工作表中的每个SHT
SHT.Copy After:=WBN.Sheets(WBN.Worksheets.Count)
WBN.Sheets(WBN.Worksheets.Count).Name=(SHT.Name)和“”
下一步
如果结束
下一个WB
Application.DisplayAlerts=False
WBN.Sheets(数组(“Sheet1”、“Sheet2”、“Sheet3”)。删除
WBN.Application.DisplayAlerts=True
ActiveWorkbook.SaveAs“C:\YOURPATH\timeline_v2.xls”将路径更改为任何
端接头

我刚刚删除了
WBN.Sheets(数组(“Sheet1”、“Sheet2”、“Sheet3”)。删除
而且效果很好

新工作簿保存为.xlsx文件,但我当然需要它作为.xlsm文件……当我刚刚将它添加到路径中时,它不起作用

ActiveWorkbook.SaveAs "U:\Excel\timetable_v2.xlsm"

如果您希望将所有包含所有数据、公式和格式的工作表复制到新工作簿中,为什么不将旧工作簿保存为新名称?是的,但这不是一个选项,因为我以后不会使用Excel woorkbook,它应该这样做,因为用户不会这样做,所以我用vba代码确定它happens@Nicola代码几乎正常工作,但调试器在列“workbook.Sheets(index)…”错误9中遇到问题,因此我尝试使用wb(测试)workbook.Sheets(测试)。。。我的问题是:1.我如何给新工作簿命名,例如:旧工作簿是tachedule.xlsm新粘贴的工作簿应命名为tachedule_v2.xlsm 2.使用哪个命令可以将工作表的名称保留在粘贴的文件中?3.我也得到了这个调试器错误9:WBN.Sheets(数组(“Sheet1”、“Sheet2”、“Sheet3”))。删除我应该替换或更改什么?错误9的问题仍然存在,所以它不会像我想的那样命名,但是你帮了我很多,谢谢我刚刚删除了
WBN.Sheets(数组(“Sheet1”、“Sheet2”、“Sheet3”)。删除
,效果很好,很高兴你到了那里!粘贴wb时,新的v2 wb中也有一个“sheet1”ws,但我不希望这样。如何从复制/粘贴中去除无用的纸张1?
ActiveWorkbook.SaveAs "U:\Excel\timetable_v2.xlsm"