[英]VBA - saving every sheet as values in excel workbook
我正在嘗試編寫一個宏來遍歷活動工作簿中的每個工作表,並將所有公式保存為值。 為此,對於每張工作表,首先我遍歷每個數據透視表,然后選擇表並復制並粘貼為值。 然后我嘗試使用worksheet.activerange.value = .value
方法來保存worksheet.activerange.value = .value
的其余單元格。
我在行wks.UsedRange.Value = wks.UsedRange.Value
上收到1004運行時錯誤。
我有兩個問題:
1)如何修復運行時錯誤?
2)有沒有辦法讓.value = .value與數據透視表一起使用? 在以前的宏中,這從未使用過樞軸,所以我必須使用如下的復制和粘貼。
非常感謝您的幫助!
Sub LockWorkbook()
Dim pvt As PivotTable
Dim wks As Worksheet
Dim i As Integer
Dim n As Integer
n = 1
For Each wks In ActiveWorkbook.Worksheets
i = 1
For Each pvt In wks.PivotTables
wks.PivotTables(i).TableRange2.Select
With Selection
.Copy
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
i = i + 1
Next pvt
Set wks = ActiveWorkbook.Worksheets(n)
wks.UsedRange.Value = wks.UsedRange.Value
n = n + 1
Next wks
End Sub
在King的觀點上,您可以簡單地將整個工作表復制並粘貼為值。
Sheets("Sheet1").cells.copy
Sheets("Sheet1").cells.PasteSpecial Paste:=xlPasteValues
如果你想把它放在一個簡單的循環中來對所有頁面進行,它可以看起來像:
Sub Test1()
Dim WS_Count As Integer
Dim I As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
ActiveWorkbook.Worksheets(I).Cells.Copy
ActiveWorkbook.Worksheets(I).Cells.PasteSpecial Paste:=xlPasteValues
Next I
End Sub
如果有幫助,請告訴我!
最新編輯消除了運行時錯誤'1004'(不包括轉換為值的數據透視表)
Option Explicit
Public Sub ConvertFormulasToValuesInUsedRangeExceptPivotTables()
Dim ws As Worksheet, ur As Range, cel As Range
Dim pvt As PivotTable, nonPivot As Range, isPvt As Boolean
For Each ws In ThisWorkbook.Worksheets
Set ur = ws.UsedRange
For Each cel In ur
For Each pvt In ws.PivotTables 'excludes pivot tables
isPvt = Not Intersect(cel, pvt.TableRange2) Is Nothing
If isPvt Then Exit For
Next
If Not isPvt Then
If Len(cel.Formula) > 0 Then 'excludes empty cells
If nonPivot Is Nothing Then
Set nonPivot = cel
Else
Set nonPivot = Union(nonPivot, cel)
End If
End If
End If
Next cel
nonPivot.Value = nonPivot.Value
Set nonPivot = Nothing
Next ws
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.