2017-10-14 69 views
0

我有一個excel工作表,裏面裝滿了數據,並且正在嘗試創建一個我可以運行的宏,這個宏可以將工作表恢復到原始狀態(使用所有原始數據)。沒有任何信息與其他工作表鏈接,並且不受保護。任何幫助,將不勝感激。如何創建宏以將工作表刷新爲原始狀態?

+0

因此,您希望實現等同於關閉工作簿(不保存)並重新打開工作簿 - 但僅用於一張工作表? – YowE3K

回答

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 

我假設你的數據集是比較大的,所以這就是爲什麼你需要把它放在一個單獨的文件,但你也可以修改這個代碼,以使同樣的事情,但使用內另一片您的工作簿,而不是打開另一個工作簿。

相關問題