我制作了一个自动计算closures的Excel工作表的副本,然后复制/粘贴值,但自动计算打开粘贴值之前

我有一个电子表格,一旦通过电子邮件将其自动计算转换为手动。 我不使用保护表,因为如果数据源在邮件后更新,公式仍然会更新。

在罕见的情况下,可能需要重新邮寄表格,并用其他表格进行更改。 那时候我有一些代码可以制作一张表格的副本,然后把这些表格复制粘贴起来,然后把原来的表格粘贴起来成为版本II。

我正在尝试避免在邮件时间复制/粘贴值,因为我想避免在工作簿中有两个副本,如果没有必要的话。

问题是,即使自动更新closures时,表复制,它似乎被closures,然后才能够复制和过去的价值观。

有没有人有一个想法,我可以停止数据馈送到表格上的公式之前,我可以将它们粘贴为值?

更新添加代码。

代码来closures自动计算

Sub Turn_AutoUpdate_OFF() ' ***** STOPS alutomatic formular updating ' x - Defined Cell Names Lock_LABEL ' x - Image Lock_ON Lock_OFF Application.ScreenUpdating = False ' do not see screen updating If ActiveSheet.Name = "4_Transport" Then ' Make ON lock Small ActiveSheet.Shapes.Range(Array("Lock_ONN")).Select ' x Selection.ShapeRange.Height = 28.3464566929 ' Make OFF lock Big ActiveSheet.Shapes.Range(Array("Lock_OFF")).Select ' x Selection.ShapeRange.Height = 46.7716535433 ' Label Range("TLock_LABEL").Select ' x ActiveCell.FormulaR1C1 = "Auto Update is OFF" Selection.HorizontalAlignment = xlLeft With ActiveCell.Characters(Start:=15, Length:=4).Font .FontStyle = "Fett" .Size = 10 .Color = -16776961 End With Range("B1").Select ' Turn automatic folular updating OFF ActiveSheet.EnableCalculation = False ElseIf ActiveSheet.Name = "5_Angebot" Then ' Make ON lock Small ActiveSheet.Shapes.Range(Array("Lock_ONN")).Select ' x Selection.ShapeRange.Height = 28.3464566929 ' Make OFF lock Big ActiveSheet.Shapes.Range(Array("Lock_OFF")).Select ' x Selection.ShapeRange.Height = 46.7716535433 ' Label Range("ANLock_LABEL").Select ' x ActiveCell.FormulaR1C1 = "Auto Update is OFF" Selection.HorizontalAlignment = xlLeft With ActiveCell.Characters(Start:=15, Length:=4).Font .FontStyle = "Fett" .Size = 10 .Color = -16776961 End With Range("B1").Select ' Turn automatic folular updating OFF ActiveSheet.EnableCalculation = False Range("B1").Select End If Application.ScreenUpdating = True ' see screen updating End Sub 

随后复制创build工作表Angebot副本(成本为工作机会)

 Sub New_Angebot_II() ' ***** Creates copy of sheet 5_Angebot ***** ' x Defined Cell Names - ANVersion , ANReplaced Dim fs As Worksheet Dim es As Worksheet Dim ns As Worksheet Set fs = Sheets("5_Angebot") ' From WorkSheet Set es = Sheets("4_Data Form") ' End on WorkSheet ' ns = Sheets("5_Angebot I") ' New WorkSheet - oooo Application.ScreenUpdating = False ' do not see screen updating ' Check if the current Angebot is the first (I) fs.Select If Range("ANVersion").Value <> "I" Then ' x MsgBox " Check if Angebot II has already been created " & vbNewLine & _ " Choose option to Create Angebot III", , "Check if Angebot II already exists" es.Select Exit Sub End If ' Give User a opportunity to stop Copy If MsgBox(" Angebot I will have its values fixed" & vbNewLine & _ " and be renamed as Anbebot II" & vbNewLine & vbNewLine & _ " Are you sure you want to create a New Angebot…?", vbQuestion + vbYesNo) <> vbYes Then es.Select Exit Sub End If ' Select & Copy 5_Angebot fs.Copy Before:=fs ' Change all formulars to fixed values ActiveSheet.Select Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ' empties the clipboard and clears the memory cache Range("B1").Select ' Rename sheet as old Angebot ActiveSheet.Name = Replace$(ActiveSheet.Name, "(2)", "I") Set ns = ActiveSheet ' New WorkSheet - oooo Range("B1").Select ' Remove all the macro Buttons and shapes 'Dim i As Integer If ActiveSheet.ProtectContents = True Then MsgBox "The Current Workbook or the Worksheets which it contains are protected." & vbLf & _ " Please resolve these issues and try again." End If On Error Resume Next ActiveSheet.Buttons.Delete Dim Shp As Shape For Each Shp In ActiveSheet.Shapes Shp.Delete Next Shp ' Protect sheet from updates ' Label Range("A4").Select ' x ActiveCell.FormulaR1C1 = "LOCK is ON" Selection.HorizontalAlignment = xlRight With ActiveCell.Characters(Start:=9, Length:=2).Font .FontStyle = "Fett" .Size = 10 .Color = -16776961 End With Range("B1").Select ' PROTECT ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ' Go to 5_Angebot change Heading to II fs.Select Range("ANVersion").Select ' x ActiveCell.FormulaR1C1 = "II" Range("B1").Select ' Remove EMAILED Heading Range("ANEmailed").Select ' x ActiveCell.FormulaR1C1 = "" Range("ANEmailDate").Select ' x ActiveCell.FormulaR1C1 = "" Range("B1").Select ' Turn Automatic update ON Call Turn_AutoUpdate_ONN ' Go Back to 4_Data Form es.Select Range("B1").Select Application.ScreenUpdating = True ' see screen updating End Sub 

在复制工作表时,Worksheet.EnableCalculation属性不会被复制,并且不会保存到已保存的工作簿中。 如果在工作表复制之后或工作簿的电子邮件之后需要将其设置为False,则需要在复制之后以及每次打开工作簿时将其复位。