繁体   English   中英

Excel VBA导出到Excel工作表但删除公式

[英]Excel VBA Export to Excel sheet but remove formulas

我有一个VBA,每天将3个标签导出到excel工作簿。 我有一段脚本删除了所有外部链接,这很棒。 但是我想知道是否还有另一段代码可以使我也删除公式。 字段标题上有一个公式,用于计算日期。

因此,不仅显示NOV 7,它还显示公式= Today()-1在我的VBA中,我想包含仅包含“ Nov 7”值而不是公式的代码。

我的脚本如下

'excel read only
Application.DisplayAlerts = False
Sheets(Array("Template", "Data Export", "Sales Breakdown")).Copy

Dim ExternalLinks As Variant
Dim x As Long

'Create an Array of all External Links stored in Workbook
ExternalLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)

'Loop Through each External Link in ActiveWorkbook and Break it
For x = 1 To UBound(ExternalLinks)
ActiveWorkbook.BreakLink Name:=ExternalLinks(x), Type:=xlLinkTypeExcelLinks
Next x

ActiveWorkbook.SaveAs Filename:="MY FILENAME", FileFormat:=51, CreateBackup:=False

怎么样:

Sub FormulaKiller()
    Dim sh As Worksheet

    For Each sh In ActiveWorkbook.Worksheets
        With sh.Cells
            .Copy
            .PasteSpecial xlPasteValuesAndNumberFormats
        End With
    Next sh
End Sub

另一种方法:

On Error Resume Next
Set FormulaCells = ActiveSheet.UsedRange.SpecialCells(xlFormulas, 23)

'   Exit if no formulas are found
If FormulaCells Is Nothing Then
    Exit Sub
End If

For Each myCell In FormulaCells
    myCell.Value = myCell.Value
Next myCell

复制后,您可以立即参考旧工作簿的值以将内容更改为值。 就像是

Dim wb1, wb2 As Workbook
Set wb1 = ActiveWorkbook
wb1.Sheets(Array("Template", "Data Export", "Sales Breakdown")).Copy
Set wb2 = ActiveWorkbook 'the new workbook is now wb2
For Each i In Array("Template", "Data Export", "Sales Breakdown")
wb2.Sheets(i).usedrange.Value = wb1.Sheets(i).usedrange.Value
Next
///rest of yourcode///

或者,如果您具有确切的范围,则可以使用range(“ A1:Z500”)代替usedrange来使其更快。 使用这种方法,您可以避免使用复制粘贴值(我讨厌)。 而不是activeworkbook,您可以在下面的代码中使用wb2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM