2011-08-17 177 views
3

我已經在我的excel文件上做了各種各樣的事情,最後我需要回到上次保存的版本。所以我關閉並重新打開我的Excel文件而不保存,這是有效的。在關閉工作簿之前,我已經複製了一系列單元格(通過使用一些排序和過濾以及其他東西創建的),現在我需要將它們重新打開時粘貼到文件的末尾。如何在執行包含VBA宏時重新打開Excel工作簿?

但是,當我們重新打開工作簿時,先前運行的宏不會繼續停止。我想在它再次打開時停止運行宏。那可能嗎?

那麼我的想法是打開工作簿時,把這個代碼:

 sub Auto_open() 
    sheet1.activate 
    ' and select the last row of the sheet1 
    activesheet.paste 
    end sub 

,因爲當工作簿重新打開時,它會自動執行該子程序並複製單元格的內容。但缺點是我們不能說它的單元格總是被複制,因爲如果用戶將一些數據複製到剪貼板,然後打開這個文件,由於Auto_open子將它複製到表尾,但這不是什麼我想要。

任何人都可以提出一個好主意來克服這個問題?

+2

您是否可以讓宏在不同的工作簿中執行所有這些操作?即工作簿A包含一個關閉並重新打開工作簿B(其中包含所有數據)的宏? – 2011-08-17 12:52:55

回答

10

爲什麼不暫時.SaveAs您的修改後的工作簿在不同的文件名下?然後可以保持打開狀態,重新打開原始工作簿,並打開兩個工作簿的複印。最後,如果您覺得如此傾向,請刪除修改後的工作簿。

使用_Open事件的此業務只是要求發生災難。

此外,.Copy是一個非常容易出錯的方法,因爲它使用剪貼板,其他應用程序也可以訪問剪貼板,並且兩端都有不可預知的結果。我從來沒有單獨使用.Copy,但有時使用.Copy Destination:=...這是安全的。但主要是,我做這樣的事情:

wbkTwo.Sheets("Sheet1").Range("A1:B5") = _ 
    wbkOne.Sheets("Sheet1").Range("A1:B5") 
相關問題