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
而且效果很好。感谢您的帮助并指出明显的问题。
目前正在尝试从 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
而且效果很好。感谢您的帮助并指出明显的问题。