VBA 将 CSV 格式写入文本文件 - 2 个障碍点

VBA To Write CSV Format to Text File - 2 Snagging Points

目前正在尝试从 excel 生成 CSV 格式的文本文件。

下面的代码正好适合我突出显示的范围。但是,我现在发现有两个障碍点使请求与标准 CSV 文本文件略有不同。

是否可以将数字和任何未填充的字段括在双引号中?

例如。期望的结果:

"Test","","1","2","3"

而不是:

"Test",1,2,3

当前 VBA 以下。我不确定对此进行更改一定是答案,但我真的被困住了。

Dim myFile As String
Dim rng As Range
Dim cellValue As Variant
Dim i As Integer
Dim j As Integer

myFile = Application.DefaultFilePath & "\test.txt"
Set rng = Selection
Open myFile For Output As #1

For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count

cellValue = rng.Cells(i, j).Value

If j = rng.Columns.Count Then
Write #1, cellValue
Else
Write #1, cellValue,

End If

Next j
Next i

Close #1

提前致谢

尝试这样的事情。

If j = rng.Columns.Count Then
    Write #1, """" & cellValue & """"
Else
    Write #1, """" & cellValue & """",
End If

如果文本单元格以某种方式已经获得双引号,而您不想获得“"text"”,那么您可能需要检查它们是否为空或数字。

If j = rng.Columns.Count Then
    if IsEmpty(cellValue) = true or isnumeric(cellValue) = true then
        Write #1, """" & cellValue & """"
    else
        Write #1,cellValue
    End if
Else
    if IsEmpty(cellValue) = true or isnumeric(cellValue) = true then
        Write #1, """" & cellValue & """", 
    else
        Write #1, cellValue, 
    End if
End If

MatthewD,太棒了。

我改了:

If j = rng.Columns.Count Then
Write #1, """" & cellValue & """"
Else
Write #1, """" & cellValue & """",
End If

至:

If j = rng.Columns.Count Then
Write #1, "" & cellValue & ""
Else
Write #1, "" & cellValue & "",
End If

而且效果很好。感谢您的帮助并指出明显的问题。