excel的CSV文件,双引号内的字段

时间:2013-03-27 18:06:20

标签: excel csv

我想从excel创建一个CSV文件,其中字段中的所有数据都在双引号内。 我从类似的问题中找到了这个代码,它几乎可以工作......

Sub CSVFile()

Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FName As Variant
FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")

If FName <> False Then
  ListSep = Application.International(xlListSeparator)
  If Selection.Cells.Count > 1 Then
    Set SrcRg = Selection
  Else
    Set SrcRg = ActiveSheet.UsedRange
  End If    
  Open FName For Output As #1    
  For Each CurrRow In SrcRg.Rows
    CurrTextStr = ""
    For Each CurrCell In CurrRow.Cells
      CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
    Next
    While Right(CurrTextStr, 1) = ListSep
      CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
    Wend    
    Print #1, CurrTextStr    
  Next    
  Close #1    
  End If
End Sub

它允许我将所选字段保存为CSV,结果如下:

"A1","B1","C3"
"A2","B2","C3"

我还需要做的就是在最后一个字段之后加上一个逗号:

"A1","B1","C3",
"A2","B2","C3",

我不知道这种代码,可以使用一些帮助。

此外,如果这有效,我如何在Excel工作表中保存一个宏,这样我就可以在任何需要的时候使用它。

由于 约翰

1 个答案:

答案 0 :(得分:1)

我认为这段代码正在从每行中删除列表分隔符/逗号。尝试删除这三行,看看是否能修复它。

While Right(CurrTextStr, 1) = ListSep
  CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
Wend  

将包含此脚本的代码模块放在“PERSONAL”Excel工作簿中,以便无论打开哪个文件,它始终可供您使用。

否则,只需将此代码模块放在所需的工作簿代码模块中,并确保另存为XLSM。