我正在以编程方式将Excel工作表另存为CSV。
在此我要清除工作表中的货币格式并仅保存值。
.ClearFormats //Works fine but it also demolishes the Date field.
有没有办法只清除货币/会计格式(Office 2010)
With wbkExcel
For i = 1 To .Worksheets.Count
.Worksheets(i).Cells.ClearFormats
.Worksheets(i).SaveAs Filename:=extractPath & Fname & " " & .Worksheets(i).Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
Next
End With
答案 0 :(得分:0)
您可以遍历工作表中的所有单元格并检查其.Numberformat。如果是您的货币格式,请应用.ClearFormats或更改格式:
Sub ExportWithoutCurrencyFormat()
Dim ws As Worksheet
Dim rng As Range
Application.ScreenUpdating = False
For Each ws In Worksheets
For Each rng In ws.Cells
If rng.NumberFormat = "#,##0.00 $" Then rng.NumberFormat = "0"
Next rng
ws.SaveAs Filename:=extractPath & Fname & " " & .Worksheets(i).Name & _
".csv", FileFormat:=xlCSV, CreateBackup:=False
Next ws
Application.ScreenUpdating = True
End Sub
这将非常慢,因为每个单元格都将被访问。更好的方法是对定义货币格式的所有货币值使用样式。然后,您需要做的就是更改样式,导出工作表 - 如果您希望将样式更改回原始样式。你可以改变这样的风格:
ThisWorkbook.Styles("My currency style").NumberFormat = "#.##0,00 €"