[英]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.