2

フィールド内のすべてのデータが二重引用符で囲まれる CSV ファイルを Excel から作成したいと考えています。同様の質問からこのコードを見つけましたが、ほとんど機能します...

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

このコードは、各行からリストの区切り記号/コンマを削除していると思います。これらの 3 行を削除して、問題が解決するかどうかを確認してください。

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

このスクリプトを含むコード モジュールを "PERSONAL" Excel ワークブックに配置して、開いているファイルに関係なく常に使用できるようにします。

それ以外の場合は、このコード モジュールを必要なワークブックのコード モジュールに配置し、必ず XLSM として保存してください。

于 2013-03-27T18:15:25.057 に答える