2013-08-22 49 views
0

我正在使用此代碼將公式從一個工作簿複製到另一個工作簿。使用VBA將Excel公式從一個工作簿複製到另一個工作簿並保留已存在的名稱

For Each r In templateWbk.Sheets("BSC").Cells.SpecialCells(xlCellTypeFormulas) 
     addressRange = r.Address 
     r.Copy instanceWbk.Sheets("BSC").Range(addressRange) 
    Next 

偶爾我得到那個說「這個名字‘XXXXX彈出一個’已存在。單擊是使用該版本的名稱,或單擊否重新命名的版本‘XXXXX’你是移動或複製

我不希望這個彈出窗口出現,我總是希望單元格的確切內容被複制,而不是更多,換句話說,我想使用現有的名稱版本。我需要幫助

該代碼也相當慢,因爲工作表有很多公式,所以如果你可以建議一個更快的方法,我會感謝那作爲 好。

+1

[看這裏](http://stackoverflow.com/questions/17837103/reference-data-in-closed-excel-sheet/17838174#17838174) – 2013-08-22 14:53:22

回答

1

您可以簡單地將一個工作簿中的值設置爲等於另一個工作簿中的值嗎?此舉有助消除「複製」的方法:

For Each r In templateWbk.Sheets("BSC").Cells.SpecialCells(xlCellTypeFormulas) 
    instanceWbk.Sheets("BSC").Range(r.Address).Formula _ 
    = templateWbk.Sheets("BSC").Range(r.Address).Formula 
Next 

此外,您可以嘗試更改DisplayAlerts屬性:

Application.DisplayAlerts = False 

未經測試您的方案,但要擺脫許多彈出窗口的好方法。

+0

看起來它可以工作,我現在正在測試它。爲什麼你有templateWbk.Sheets(「BSC」).Cells.Range(r.Address).Formula而不是templateWbk.Sheets(「BSC」).Range(r.Address).Formula? – user1283776

+0

對不起,我忘了把它拿出來。你提出的建議是正確的,我編輯過。 –

相關問題