VBA – 在excel工作簿中保存每个表格作为值

我试图编写一个macros来循环通过活动工作簿中的每个工作表,并将所有公式保存为值。 为此,对于每张表,首先我运行每个数据透视表,然后select表并复制并粘贴为值。 然后我试图使用worksheet.activerange.value = .value方法来保存worksheet.activerange.value = .value剩余的单元格。

我在行wks.UsedRange.Value = wks.UsedRange.Value上得到1004运行时错误。

我有两个问题:

1)我如何解决我的运行时错误?

2)有没有办法让.value = .value与透视表一起工作? 在以前的macros中,这从来没有与pivot一起工作,所以我必须使用复制和粘贴如下。

非常感谢您的帮助!

 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 

在国王的观点,你可以简单地复制和粘贴整个表作为价值观。

 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