3
this forum的代碼是我用作起點的。我試圖修改它以複製多個工作表並將它們全部粘貼爲值,而不是僅限一個工作表。編輯VBA將多個工作表作爲值粘貼到新工作簿中
我複製了多張使用worksheets(array(1,2,3)).copy
。我認爲問題是With ActiveSheet.UsedRange
,因爲它只是將第一個工作表替換爲值並將其餘工作表作爲公式保留。
我需要更改哪些內容才能將所有工作表粘貼爲值?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Worksheets(Array("Sheet 1","Sheet 2","Sheet 3").Copy
With ActiveSheet.UsedRange
.Value = .Value
End With
Set wbNew = ActiveWorkbook
wbNew.SaveAs "L:\Performance Data\UK Sales\Sales (Latest).xlsx"
wbNew.Close True
Application.DisplayAlerts = True
End Sub
謝謝你的迴應! 我試圖將這些值粘貼到**複製的**工作簿中,如您所說。原始工作簿應該保留所有公式。 但是,當我嘗試這個代碼時,它粘貼了原始工作表中的值,並在循環時耗盡內存。有沒有辦法限制它有多少個循環? – tenvfa
@tenvfa - 查看更新的代碼。那樣有用嗎?如果內存不足,您可能需要檢查UsedRange的大小......您預計它會有多大? – BruceWayne
您的編輯修復了將值複製到新工作簿的問題,所以謝謝。 它再次耗盡內存,調試器標記爲 'wbNew.Worksheets(shts(i))。UsedRange.Value = wbNew.Worksheets(shts(i))。UsedRange.Value'作爲錯誤。我是一名完全沒有編碼經驗的VBA初學者,所以我不確定我是否理解你對尺寸的問題。 最大的工作表包含15列25,000行的單元格值。最小的紙張有15列2000行。 – tenvfa