VBA创建具有不同行长的CSV

时间:2019-05-31 08:59:55

标签: vba csv

一般来说,我对VBA或programmin还是陌生的。 不过,我需要创建用于导出csv文件的代码。 我的问题是我的文件中有几行长度不同。 该文件如下所示:

3,6,8                       
3,9,4,7,8
1
2,4
7,9,4,5,6,8,1
3

我的代码给了我

"3","6","8","","","",""                     
"3","9","4","7","8","",""
"1","","","","","",""
"2","4","","","","",""
"7","9","4","5","6","8","1"
"3","","","","","",""

我需要:

"3","6","8"                 
"3","9","4","7","8"
"1"
"2","4"
"7","9","4","5","6","8","1"
"3"

有人可以帮助我吗?

Sub CIF_Katalog_2()

Dim i As Long, lngZeile As Long
Dim myCSVFileName As String
    Dim myWB As Workbook

Set myWB = ThisWorkbook

myCSVFileName = myWB.Path & "\" & "CSV Katalog Export_" & VBA.Format(VBA.Now, "dd-MMM-yyyy hh-mm") & ".csv"
lngZeile = Range("A" & Rows.Count).End(xlUp).Row

Open myCSVFileName For Output As #1


For i = 1 To lngZeile

    If i = 1 Then

        Print #1, Chr(34) & Cells(i, 1).Value & Chr(34)

    ElseIf i = 2 Then

        Print #1, Chr(34) & Cells(i, 1).Value & Chr(34) & "," & Chr(34) & Cells(i, 2).Value & Chr(34)

    Else

        Print #1, Chr(34) & Cells(i, 1).Value & Chr(34) & "," & Chr(34) & Cells(i, 2).Value & Chr(34) & "," & Chr(34) & Cells(i, 3).Value & Chr(34) & "," & Chr(34) & Cells(i, 4).Value & Chr(34) & "," & Chr(34) & Cells(i, 5).Value & Chr(34) & "," & Chr(34) & Cells(i, 6).Value & Chr(34) & "," & Chr(34) & Cells(i, 7).Value & Chr(34) & "," & Chr(34) & Cells(i, 8).Value & Chr(34) & "," & Chr(34) & Cells(i, 9).Value & Chr(34) & "," & Chr(34) & Cells(i, 10).Value & Chr(34) & "," & Chr(34) & Cells(i, 11).Value & Chr(34) & "," & Chr(34) & Cells(i, 12).Value & Chr(34) & "," & Chr(34) & Cells(i, 13).Value _
        & Chr(34) & "," & Chr(34) & Cells(i, 14).Value & Chr(34) & "," & Chr(34) & Cells(i, 15).Value & Chr(34) & "," & Chr(34) & Cells(i, 16).Value & Chr(34) & "," & Chr(34) & Cells(i, 17).Value & Chr(34) & "," & Chr(34) & Cells(i, 18).Value & Chr(34) & "," & Chr(34) & Cells(i, 19).Value & Chr(34) & "," & Chr(34) & Cells(i, 20).Value & Chr(34) & _
        "," & Chr(34) & Cells(i, 21).Value & Chr(34) & "," & Chr(34) & Cells(i, 22).Value & Chr(34) & "," & Chr(34) & Cells(i, 23).Value & Chr(34) & "," & Cells(i, 24).Value & Chr(34) & "," & Chr(34) & Cells(i, 25).Value & Chr(34) & "," & Chr(34) & Cells(i, 26).Value & Chr(34) & "," & Chr(34) & Cells(i, 27).Value & Chr(34) & "," & Chr(34) & Cells(i, 28).Value & Chr(34) & "," & Chr(34) & Cells(i, 29).Value & Chr(34) & "," & Cells(i, 30).Value & "," & Chr(34) & Cells(i, 31).Value & Chr(34) & "," & Chr(34) & Cells(i, 32).Value & Chr(34) & "," & Chr(34) & Cells(i, 33).Value & Chr(34) & "," & Chr(34) & Cells(i, 34).Value & Chr(34) & "," & Chr(34) & Cells(i, 35).Value & Chr(34)

End If

Next i

Close #1

MsgBox "Erledigt"

End Sub

1 个答案:

答案 0 :(得分:0)

尝试一下...只是重复使用代码:

Sub CIF_Katalog_2()

Dim i As Long, x As Long, lngZeile As Long
Dim myCSVFileName As String, strTemp As String
Dim myWB As Workbook: Set myWB = ThisWorkbook

myCSVFileName = myWB.Path & "\" & "CSV Katalog Export_" & VBA.Format(VBA.Now, "dd-MMM-yyyy hh-mm") & ".csv"
lngZeile = Range("A" & Rows.Count).End(xlUp).Row

Open myCSVFileName For Output As #1

    For i = 1 To lngZeile
        For x = 1 To 35
            If Cells(i, x) <> "" Then
                strTemp = Chr(34) & Cells(i, x).Value & Chr(34) & ","
            End If
        Next x
        Print #1, Left(strTemp, Len(strTemp) - 1)
    Next i

Close #1

MsgBox "Erledigt"

End Sub