アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelデータをCSV形式で保存するとき文字列はダブルコーテーション、数字列はそのままでカンマ区切りしたいです。確か123のCSV形式はそうなってたと思います。お手数ですが御回答、宜しくお願い致します。

A 回答 (2件)

Windowsのcsv形式はダブルコーテーションに対応してないので保存時の設定で行うのはできないと思います。


シェアウェアですが下記のようなソフトがありますが...
超便利CSVコンバーター
http://www.vector.co.jp/soft/win95/business/se23 …
    • good
    • 0
この回答へのお礼

参考にさせていただきます。ありがとうございます。

お礼日時:2005/03/29 09:04

「標準モジュール」に貼り付けることを想定して作りました。


ActiveSheet の UsedRange を取るように作られています。
「超便利CSVコンバーター 」のHPで、私のと仕上がりを比較してみましたが、こちらの試験では、同じように仕上がります。私のコードの中で、多少、気がかりな部分もありますが、これだけしたら、何も難しいことはしていませんので、内容的には簡単な部類だと思います。

Sub CsvOutWithQuatation()
 Dim objFs As Object
 Dim objText As Object
 Dim Rng As Range
 Dim DataRow As Long
 Dim DataCol As Integer
 Dim i As Long, j As Long
 Dim buf As String
 Dim myCsv As String
 Const QT As String = """" 'クォーテーション
 Const sep As String = "," 'コンマ切り
 Const Ext As String = ".csv" '拡張子
 Dim myPath As String
 Set objFs = CreateObject("Scripting.FileSystemObject")
 Set Rng = ActiveSheet.UsedRange
 DataRow = Rng.Rows.Count
 DataCol = Rng.Columns.Count
 myPath = ThisWorkbook.Path & "\" 'マクロのブックのパスと同じ場所
 If Application.CountA(Rng) <= 1 Then
  MsgBox "データが1つか、空です", 16
  Exit Sub
 End If
 Do
  myCsv = Application.InputBox("ファイル名を入れてください", Type:=2)
  If myCsv = "False" Or myCsv = "" Then
   Exit Sub
   Else
   If InStr(myCsv, Ext) = 0 Then
    myCsv = myCsv & Ext
   End If
  End If
  If Dir(myPath & myCsv) <> "" Then
   MsgBox "同名のファイルが既にあります", 16
  End If
 Loop Until Dir(myPath & myCsv) = ""
 Set objText = objFs.CreateTextFile(myPath & myCsv)
 For i = 1 To DataRow
  If VarType(Rng.Cells(i, 1)) = vbString Then
   buf = QT & Rng.Cells(i, 1).Value & QT
   Else
   buf = Rng.Cells(i, 1).Value
  End If
  For j = 2 To DataCol
   If VarType(Rng.Cells(i, j)) = vbString Then
    buf = buf & sep & QT & Rng.Cells(i, 1).Value & QT
    Else
    buf = buf & sep & Rng.Cells(i, j).Value
   End If
  Next j
  objText.WriteLine (buf)
 Next i
 Set Rng = Nothing
 Set objText = Nothing
 Set objFs = Nothing
 Beep '終了したら、音がなります。
End Sub
    • good
    • 0
この回答へのお礼

詳しくありがとうございます。

お礼日時:2005/03/29 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!