Vba 如何在不导出Visual Basic Excel中公式的情况下导出usedrange值

Vba 如何在不导出Visual Basic Excel中公式的情况下导出usedrange值,vba,excel,export-to-csv,Vba,Excel,Export To Csv,我尝试了多种变体,并不断得到相同的结果。最近的迭代是: 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 giv

我尝试了多种变体,并不断得到相同的结果。最近的迭代是:

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
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
=IF(D5>0,TODAY(),"")
原因是我的Excel文件包含以下公式:

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
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
=IF(D5>0,TODAY(),"")

如果在某些单元格中输入任何内容,则会自动填充某些单元格。这导致Excel认为单元格已“使用”并包含它们。我尝试了sheetwork.usedrange.values的几个变体,要么得到了相同的输出,要么由于代码错误而得到了调试提示。如何从输出中删除逗号?

您可以从起始行复制到最后一行,而不是复制和粘贴整个使用范围。最后一行可以使用以下命令找到:

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

编辑以包含整个代码

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


不需要复制,只需另存为CSV,看看是否helps@AaronMartin,你看完了吗?我刚刚用ActiveWorkBook插入了它,但仍然会得到包含公式的行的逗号。我删除了With Active工作簿和与关联的结尾,但它仍然出错。我将结尾向下移动到.SaveAs短语下方,就在结尾子行之前,它仍然崩溃,但它生成了文件,只是不保存它。我可以看到生成的Excel文件删除了行,我现在无法将其导出到csv。。。有什么建议吗?你必须在使用ActiveWorkBook的
之前插入它,即用ActiveSheet.UsedRange替换你的
。。。以
block结束它看起来会起作用,当它询问您是否要覆盖文件时,即使格式被删除,我也只看到标题下的两行,但一旦您覆盖了文件(我删除了文件以确保文件确实被写入)它仍然有带逗号的行。我听不懂你说的:我在发布代码之前测试了代码,它成功了。确保您正在代码生成的同一文件夹中打开相同的文件