首页 > 解决方案 > VBA - 二维数组到 CSV

问题描述

我在下面有以下子(我在某处得到了表单),它应该从二维数组创建一个 csv。不错哦,排序有效,但有些问题我不知道如何解决。从图像中可以看出,记事本在文件中显示了不可打印的字符。我似乎无法在代码中找到或删除。

非常感谢您的任何帮助,在此先感谢您。

Public Sub SaveCSV(arr_SelectedCMHist() As Variant, path As String, Optional Delim As String = ",", Optional quote As String = """")

    Dim opf As Long
    Dim row As Long
    Dim column As Long
     
        If Dir(path) <> "" Then Kill path
     
        opf = FreeFile
        Open path For Binary As #opf
     
        For row = LBound(arr_SelectedCMHist, 1) To UBound(arr_SelectedCMHist, 1)
            For column = LBound(arr_SelectedCMHist, 2) To UBound(arr_SelectedCMHist, 2)
                Put #opf, , quote & arr_SelectedCMHist(row, column) & quote
                If column < UBound(arr_SelectedCMHist, 2) Then Put #opf, , Delim
            Next column
            If row < UBound(arr_SelectedCMHist, 1) Then Put #opf, , vbCrLf
        Next row
        
        Close #opf
 
End Sub

在此处输入图像描述

标签: arraysexport-to-csv

解决方案


我通过了另一种方法,我希望这对将来的某人有所帮助,我从这里得到的

Public Sub SaveAsCSV(arr_SelectedCMHist() As Variant, sFilename As String, Optional sDelimiter As String = ",", Optional quote As String = """")

Dim n As Long 'counter
Dim M As Long 'counter
Dim sCSV As String 'csv string to print

opf = FreeFile

  Open sFilename For Output As #opf
  For n = 0 To UBound(arr_SelectedCMHist(), 1)
    sCSV = ""
    For M = 0 To UBound(arr_SelectedCMHist(), 2)
      sCSV = sCSV & quote & Format(arr_SelectedCMHist(n, M)) & quote & sDelimiter
    Next M
    sCSV = Left(sCSV, Len(sCSV) - 1) 'remove last Delimiter
    Print #opf, sCSV
  Next n
  Close #opf

End Sub

推荐阅读