创建文件的硬拷贝,并保持原始文件不变

时间:2018-07-17 06:50:49

标签: excel vba excel-vba

我有一个名为testing的文件。该文件包含以下简单的电子表格:

     A          B         C        D
1  Revenue    5.000
2  Costs     -4.000
3  Profit     1.000 =SUM(B1:B2)
4
5

现在,我想在桌面上创建此电子表格的硬拷贝。因此,我使用此VBA:

Sub Create_Hardcopy()
Call Hardcopy
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\Testing-HC.xlsm"
Workbooks.Open "C:\Users\" & Environ("Username") & "\Desktop\Testing-HC.xlsm", UpdateLinks:=False
ThisWorkbook.Close SaveChanges = False
End Sub


Sub Hardcopy()
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

到目前为止,所有这些都工作正常。硬拷贝已创建,原始文件已关闭。


但是,此代码还可以硬拷贝我的原始工作表中的值,但是我的想法是保持原始文件不变。因此,我使用了ThisWorkbook.Close SaveChanges = False行,但仍然以某种方式将更改保存在原始文件中。

您知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:0)

您的主要问题是

中的语法
ThisWorkbook.Close SaveChanges = False

是错误的,必须是

ThisWorkbook.Close SaveChanges:=False

注意用:=代替=


反之亦然。

  1. SaveCopy
  2. 打开副本
  3. “硬拷贝”副本
  4. 关闭原始工作簿

所以您最终会遇到这样的情况

Public Sub CreateConstantWorkbookCopy()
    ThisWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\Testing-HC.xlsm"

    Dim WbCopy As Workbook
    Set WbCopy = Workbooks.Open("C:\Users\" & Environ("Username") & "\Desktop\Testing-HC.xlsm", UpdateLinks:=False)

    ReplaceAllFormulasWithValues WbCopy

    ThisWorkbook.Close SaveChanges:=False
End Sub


Public Sub ReplaceAllFormulasWithValues(wb As Workbook)
    Dim i As Integer
    For i = 1 To wb.Worksheets.Count
        wb.Worksheets(i).Cells.Copy
        wb.Worksheets(i).Cells.PasteSpecial Paste:=xlPasteValues
    Next i
End Sub