Export excel to csv-保留数字格式为文本

Export excel to csv-Retain number format to Text

我正在使用 中的代码将 excel 转置为 csv 文件。它工作完美(感谢 Nat)。

现在我遇到了一个问题:因为我想从这个文件中读取数据来填写 Autocad table,我需要将 csv 数字格式设置为 "Text" 格式(现在是 "General" 格式,通常在打开 excel 时出现)。当我导入我的 csv 数据时,它省略了前导零单元格并将 1:100 更改为 0.01。

当我用 excel 打开 csv 文件并将这些单元格格式更改为 "Text",然后保存并关闭文件时,一切正常。我怎样才能自动执行此过程(或首先以文本格式保存),因为我不希望每个用户手动执行此操作。

谢谢

Private Sub Exporttocsv()
     Dim ColNum As Integer
      Dim Line As String
      Dim LineValues() As Variant
      Dim OutputFileNum As Integer
      Dim PathName As String
      Dim RowNum As Integer
      Dim SheetValues() As Variant

      PathName = Application.ActiveWorkbook.Path
      OutputFileNum = FreeFile

      Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum

      SheetValues = Sheets("Current Revision").Range("B2:CV98").value

    Dim RowMax
    RowMax = UBound(SheetValues)
    Dim ColMax
    ColMax = 99
    ReDim LineValues(1 To RowMax)

      For ColNum = 1 To ColMax
        For RowNum = 1 To RowMax
          LineValues(RowNum) = SheetValues(RowNum, ColNum)
        Next
        Line = Join(LineValues, ",")
        Print #OutputFileNum, Line
      Next
      Close OutputFileNum
    End Sub

要将 1:100 比率按原样写入 CSV,最好是在将值写入 CSV 文件时使用类型转换。如下所示:

      LineValues(RowNum) = CStr(SheetValues(RowNum, ColNum))

但是,如果您想要前导零,我认为类型转换不会保留前导零。

使用记事本等任何文本 viewer/editor 验证 CSV 是否包含您想要的值(例如 1:100 而不是 0.01)

如果值的格式不正确,则将其格式化为文本:

With Sheets("Current Revision").Range("B2:CV98")
.numberformat = "@"
.entirecolumn.autofit 'To avoid #### errors as we're using text property below
SheetValues = .text
End with

以上内容应替换您原始代码中的这一行。

SheetValues = Sheets("Current Revision").Range("B2:CV98").value 

另一种方法是在打印到文本文件之前将数组中的值修改为。

未经测试并在移动设备上编写,对于格式不正确的问题深表歉意。希望有用。