如何在Visual Basic Excel中导出已使用的值的范围而不导出公式

我已经尝试了多种变化,并不断得到相同的结果。 最近的一次迭代是这样的:

Sub CopyToCSV() ' Copy and Paste Active Sheet ActiveSheet.Copy With ActiveSheet.UsedRange .Value = .Value End With 'The new workbook becomes Activeworkbook: With ActiveWorkbook 'Saves the new workbook to given folder / filename: .SaveAs Filename:= _ "C:\upload\19meat-kl.csv", _ FileFormat:=xlCSV, _ CreateBackup:=False 'Closes the file .Close False End With End Sub 

我的输出看起来像这样:

 Store,Department,Date,Category,Item Count,Retail Price,Dollars,Reduced Retail,Total Loss,Reason for loss 18,90,2017-04-04,Meat,2,3,6,1,4,Out of Date 18,90,2017-04-04,Pork,2,1.5,3,0.99,1.02,Other ,,,,,,,,, ,,,,,,,,, ,,,,,,,,, ,,,,,,,,, ,,,,,,,,, 

原因是我的Excel文件包含这样的一些公式:

 =IF(D5>0,TODAY(),"") 

如果某些单元格input了某些单元格,则会自动填充某些单元格。 这导致Excel认为单元格被“使用”并包含它们。 我尝试了几个变体Worksheet.usedrange.values,我得到相同的输出或由于错误的代码,我得到一个debugging提示。 我怎样才能从输出中删除逗号?

编辑以包含整个代码

只要清除几乎空白的单元格

 Sub CopyToCSV() ' Copy and Paste Active Sheet ActiveSheet.Copy With ActiveSheet.UsedRange .Value = .Value .SpecialCells(xlCellTypeBlanks).EntireRow.Delete End With 'The new workbook becomes Activeworkbook: With ActiveWorkbook 'Saves the new workbook to given folder / filename: .SaveAs Filename:="C:\upload\19meat-kl.csv", FileFormat:=xlCSV, CreateBackup:=False 'Closes the file and discard changes (no needed any more) .Close False End With End Sub 

不是复制和粘贴整个使用的范围,你可以从你的起始行复制到没有公式的最后一行。 最后一行可以通过使用这个find:

  Dim i As Integer With Sheets(1).Columns("A").SpecialCells(xlCellTypeConstants) i = .Cells(.Cells.Count).row End With