2

我想从 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 工作表中,以便我可以在需要时随时使用它。

谢谢约翰

4

1 回答 1

1

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

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

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

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

于 2013-03-27T18:15:25.057 回答