Excel VBA在新创建的工作簿中执行代码
我试图将我的Excel文件中的一个工作表保存为新文件,但没有公式。Excel VBA在新创建的工作簿中执行代码
我有这样的代码,正在得到保存的文件:
Sub SaveInvoice()
'Create a filename based on invoicenumber
Dim FileName As String
FileName = Sheets("Sale").Range("C3").Value
'Copy the "Print" sheet
Worksheets("Print").Copy
With ActiveWorkbook
'Save the file as new
.SaveAs FileName:="C:\" & FileName
End With
End Sub
这个工程就像一个魅力,但我需要去掉公式的,所以我一派,发现那位这段代码:
ActiveSheet.Copy
Cells.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
而且这也适用,但是一旦我将两段代码合并在一起,整个函数就会中断。
With ActiveWorkbook
'Transform cells to values
ActiveSheet.Copy
Cells.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
'Save the file as new
.SaveAs FileName:="C:\" & FileName
End With
这导致我的基础工作表中的蜜蜂从公式中被剥离。
我需要知道如何在Newle创建的工作簿上调用该函数。
当复制没有Destination
的工作表时,excel创建了New Workbook
,而New Workbook
及其仅有的Worksheet
处于活动状态。
编辑:我刚刚意识到的是,在最后的代码从原来的几行代码:
'Copy the "Print" sheet
Worksheets("Print").Copy
被感动的
With ActiveWorkbook
内先前指通过创建New Workbook
Worksheet.Copy
现在指的是Source Workbook
因此,让看看有什么作品的最终代码实际上是这样做的:
这里ActiveWorkbook
是[来源簿]和ActiveSheet
必须[打印]
With ActiveWorkbook
此份ActiveSheet
创建New Workbook
只有一个片
ActiveSheet.Copy
这些线影响的[Source簿]的ActiveSheet
[打印]。 不是因为With
声明,而是因为它是一个活动
Cells.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
意在影响对象,它指的是必须以点开始With
内的命令[。]。但是这些行是无效的,因为单元格和范围不是方法,也不是工作簿对象的属性,因此错误会被触发。
with语句
执行一系列单个对象或用户定义的类型上的语句。
(从msdn.microsoft.com帮助)
这样可以节省由With
发言中提到的工作簿,仍然有公式
'Save the file as new
.SaveAs FileName:="C:\" & FileName
End With
试试这个代码:
Sub SaveInvoice_TEST_1()
'Create a filename based on invoicenumber
Dim FileName As String
With ThisWorkbook
FileName = .Sheets("Sale").Range("C3").Value
'Copy the "Print" sheet
.Worksheets("Print").Copy
End With
With ActiveWorkbook
Rem Replace Formulas with Values
.Sheets(1).UsedRange.Value = .Sheets(1).UsedRange.Value2
'Save the file as new
.SaveAs FileName:="C:\" & FileName
End With
End Sub
推荐阅读以下页面来获得使用的资源进行更深入的了解:
尝试像下面这样。阅读“ActiveSheet.Copy”帮助页面 - 请注意,它创建了一个新的工作簿,并激活它
Dim MyWkbk as workbook
set MyWkbk = ActiveWorkbook
ActiveSheet.Copy
With ActiveWorkbook
Cells.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
'Save the file as new
.SaveAs FileName:="C:\" & FileName
'.close
End With
MyWkBk.activate
由于@EEM发现该溶液。
这是我使用的代码:
不工作时,保存原始文件的副本。 – Nautilus
奇怪的是,它在我所有的测试中都运行良好,但现在只需进行编辑并让我知道...... – EEM
检查!这就是诀窍!谢谢! – Nautilus