Vba 创建文件的硬拷贝并保持原始文件不变
我有一个名为Vba 创建文件的硬拷贝并保持原始文件不变,vba,excel,Vba,Excel,我有一个名为测试的文件。该文件由以下简单电子表格组成: 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\" &am
测试的文件。该文件由以下简单电子表格组成:
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
到目前为止,所有这些都很有效。将创建硬拷贝并关闭原始文件
但是,这段代码也硬拷贝了原始工作表中的值,但我的想法是保持原始文件不变。因此,我使用了行thiswoolk.Close SaveChanges=False
,但不知怎的,它仍然将更改保存在原始文件中
你知道如何解决这个问题吗?你的主要问题是
ThisWorkbook.Close SaveChanges = False
这是错误的,必须这样做
ThisWorkbook.Close SaveChanges:=False
注意:=
而不是=
或者反过来做
保存副本
打开副本
“硬拷贝”拷贝
关闭原始工作簿
所以你就这样结束了
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
你知道“硬拷贝”(又名)是一张或多张打印的纸,代表一个电子文件,是吗?它不是一个所有公式都已解析为返回值的工作簿。(来源:)完美。正是我想要的。感谢您提供额外的替代代码。