Copy/Paste 个单元格和值

Copy/Paste cells & value

我想copy/paste所有工作表,包括单元格中的values/formula到另一个新工作簿。

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

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

刚刚快速浏览了一下,这似乎可以解决问题:

信用:get digital help

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 = Left(WB.Name, 30 - Len(SHT.Name)) & "-" & SHT.Name
    Next SHT
End If
Next WB
Application.DisplayAlerts = False
WBN.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
WBN.Application.DisplayAlerts = True

所以我假设您将保存第二个工作簿以供命名?因此,只需在要保存路径的下方添加路径,它现在还保留 sheet 名称。 我不确定为什么你会收到调试器错误它对我来说工作正常,试试这个代码,看看你是否仍然得到它?

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.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete 而且效果很好

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

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