将工作表复制到替换当前数据的不同工作簿中

时间:2015-08-03 10:56:44

标签: excel vba copy worksheet

我希望有人可以帮助我。

我有两本工作簿。 Wb1 = FAC试验 Wb2 = ROMAN

两个工作簿中都有许多工作表。我想要发生的是Wb2中的数据,名为Format的工作表被复制到名为Format的Wb1工作表中。

Wb1中的工作表已经命名,并且每天都会从Wb2更新。 Wb1工作表格式中的数据每次都会被覆盖。我看到这会发生在点击命令按钮时。单击命令按钮时,Wb2不会打开。

我找到了一些代码,但每次代码运行时都会创建一个新工作表,我不确定如何更改它以满足我的需求。

提前感谢您,非常感谢任何帮助

4 个答案:

答案 0 :(得分:1)

您可以轻松录制一段代码来自行完成,只需使用'录制宏'在开发人员功能区上。

现在,下面应该执行您之后的操作(记得更新工作簿2的文件路径)。

我刚刚复制了"格式"来自ROMAN工作簿的工作表,然后删除现有的"格式"工作表并将新的名称重新命名为"格式"。

Sub wsCopy()
    Dim wb1 As Workbook, wb2 As Workbook, ws1Format As Worksheet

    Application.ScreenUpdating = False
    Set wb1 = ThisWorkbook
    Set wb2 = Workbooks.Open("[ENTER FILE PATH]\ROMAN.xlsx")
    Set ws1Format = wb1.Sheets("Format")
    Set ws2Format = wb2.Sheets("Format")

    '' Copy the "Format" worksheet to wb1.
    ws2Format.Copy Before:=ws1Format
    wb2.Close

    '' Delete existing "Format" worksheet.
    Application.DisplayAlerts = False
    ws1Format.Delete
    Application.DisplayAlerts = True

    '' Rename new sheet to "Format".
    wb1.Sheets("Format (2)").Name = "Format"
    Application.ScreenUpdating = True
End Sub

答案 1 :(得分:1)

此答案基于@Ituner之前

Sub wsCopy()
    Dim wb1 As Workbook, wb2 As Workbook, ws1Format As Worksheet

    Application.ScreenUpdating = False
    Set wb1 = ThisWorkbook
    Set wb2 = Workbooks.Open("[ENTER FILE PATH]\ROMAN.xlsx")
    Set ws1Format = wb1.Sheets("Format")
    Set ws2Format = wb2.Sheets("Format")

    '' Copy the cells of the "Format" worksheet.
    ws2Format.Cells.Copy 


    '' Paste cells to the sheet "Format".
    wb1.Sheets("Format").Paste
    wb2.Close false 'remove false if you want to be asked if the workbook shall be saved.
    Application.ScreenUpdating = True
End Sub

答案 2 :(得分:0)

我使用的代码是

Private Sub CommandButton1_Click()

使用工作簿(" ROMAN.xls")       .Sheets("格式")。复制_       之前:=工作簿(" FAC Trial.xls")。表格("格式")

结束

End Sub

很明显,我必须打开两个工作簿,但我只是想将数据复制到格式工作表而不创建新工作表

答案 3 :(得分:0)

Sub ReplaceSheets(wb1作为工作簿,wb2作为工作簿,SheetName作为字符串)

wb1.Sheets(SheetName).Cells.Clear
wb2.Sheets(SheetName).Cells.Copy wb1.Sheets(SheetName).Range("A1")

结束子