我有一个充满数据的excel工作表,我正在尝试创建一个我可以运行的宏,它将表单恢复到原始状态(所有原始数据都已就绪)。这些信息都没有链接到其他工作表,也没有受到保护。任何帮助,将不胜感激。
答案 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
我假设你的数据集相对较大,这就是为什么你需要将它放在一个单独的文件中,但你也可以修改这个代码来做同样的事情,但是使用另一个工作簿中的工作表而不是打开另一个工作簿。