1

我以编程方式将 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
4

1 回答 1

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 €"
于 2013-10-29T09:27:17.993 回答