如何创建一个宏来将工作表刷新到其原始状态?

时间:2017-10-14 16:37:41

标签: excel-vba vba excel

我有一个充满数据的excel工作表,我正在尝试创建一个我可以运行的宏,它将表单恢复到原始状态(所有原始数据都已就绪)。这些信息都没有链接到其他工作表,也没有受到保护。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

我们假设您有一个名为 Original.xlsx 的文件,其中保存了原始数据,然后您可以使用以下代码打开它并传输值。

我在这里使用“转移”一词是因为它不是复制粘贴,您只需使用VBA传递值而不是复制粘贴,当你有大量数据时可能会更慢。

Option Explicit

Sub Transfer_data()

    Dim Orig As Workbook, DataRange As Range
    Set Orig = Workbooks.Open("C:\Path\Original.xlsx")
    Set DataRange = Orig.Sheets("Sheet1").UsedRange

    Dim TopLeftRow As Long, TopLeftColumn As Long, BottomRightRow As Long, BottomRightColumn As Long
    TopLeftRow = DataRange.Cells(1, 1).Row
    TopLeftColumn = DataRange.Cells(1, 1).Column
    BottomRightRow = DataRange.Cells.SpecialCells(xlCellTypeLastCell).Row
    BottomRightColumn = DataRange.Cells.SpecialCells(xlCellTypeLastCell).Column

    Dim MySheet As Worksheet
    Set MySheet = ThisWorkbook.Sheets("Sheet1")

    'We clear the content, but not the formattting
    MySheet.Cells.ClearContent

    Dim MyRange As Range
    Set MyRange = MySheet.Range(MySheet.Cells(TopLeftRow, TopLeftColumn), MySheet.Cells(BottomRightRow, BottomRightColumn))

    MyRange.Value2 = DataRange.Value2

    Orig.Close SaveChanges:=False

End Sub

我假设你的数据集相对较大,这就是为什么你需要将它放在一个单独的文件中,但你也可以修改这个代码来做同样的事情,但是使用另一个工作簿中的工作表而不是打开另一个工作簿。