将 Excel 带逗号的文件转换为 CSV VBA
Convert Excel file with commas to CSV VBA
我有一个 excel 文件需要使用 Excel VBA.
转换为 CSV
所以我得到了以下代码:
Sub REPORT()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim rowNum As Integer
'Create CSV file
PathName = Application.ActiveWorkbook.Path OutputFileNum = FreeFile
Open PathName & "\" & "Myfile" & ".csv" For Output Lock Write As #OutputFileNum
SheetValues = ActiveSheet.UsedRange
Range("A1").CurrentRegion.Select
With ActiveSheet.UsedRange
numbercolumns = .Columns.Count
End With
ReDim LineValues(1 To numbercolumns)
For rowNum = 1 To last
For ColNum = 1 To numbercolumns
LineValues(ColNum) = SheetValues(rowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
我的问题是 Excel 文件的任何单元格中都有逗号。当发生这种情况时,宏将单元格一分为二,并将一部分移动到下一列覆盖数据。
非常感谢
第一个也是最简单的方法是在加入之前删除所有逗号:
For rowNum = 1 To last
For ColNum = 1 To numbercolumns
LineValues(ColNum) = Replace(SheetValues(rowNum, ColNum), ",", "")
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
另一种选择可能是用“;”分隔 csv 文件或所用数据中未包含的任何其他字符。
最终你可以用其他东西替换逗号(例如“#”或其他不太可能使用的字符)并在读取文件时恢复它,当然假设文件是以你可以控制的某种方式读取的。
你看原生函数了吗?
ActiveSheet.SaveAs Filename:=PathName & "\" & "Myfile" & ".csv", FileFormat:=xlCSV, CreateBackup:=False
它正确地用双引号转义包含逗号的单元格
最简单的方法是将要附加的内容括在引号中 - 您可以使用 Char(34)。
我有一个 excel 文件需要使用 Excel VBA.
转换为 CSV所以我得到了以下代码:
Sub REPORT()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim rowNum As Integer
'Create CSV file
PathName = Application.ActiveWorkbook.Path OutputFileNum = FreeFile
Open PathName & "\" & "Myfile" & ".csv" For Output Lock Write As #OutputFileNum
SheetValues = ActiveSheet.UsedRange
Range("A1").CurrentRegion.Select
With ActiveSheet.UsedRange
numbercolumns = .Columns.Count
End With
ReDim LineValues(1 To numbercolumns)
For rowNum = 1 To last
For ColNum = 1 To numbercolumns
LineValues(ColNum) = SheetValues(rowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
我的问题是 Excel 文件的任何单元格中都有逗号。当发生这种情况时,宏将单元格一分为二,并将一部分移动到下一列覆盖数据。
非常感谢
第一个也是最简单的方法是在加入之前删除所有逗号:
For rowNum = 1 To last
For ColNum = 1 To numbercolumns
LineValues(ColNum) = Replace(SheetValues(rowNum, ColNum), ",", "")
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
另一种选择可能是用“;”分隔 csv 文件或所用数据中未包含的任何其他字符。
最终你可以用其他东西替换逗号(例如“#”或其他不太可能使用的字符)并在读取文件时恢复它,当然假设文件是以你可以控制的某种方式读取的。
你看原生函数了吗?
ActiveSheet.SaveAs Filename:=PathName & "\" & "Myfile" & ".csv", FileFormat:=xlCSV, CreateBackup:=False
它正确地用双引号转义包含逗号的单元格
最简单的方法是将要附加的内容括在引号中 - 您可以使用 Char(34)。