Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9972 / 13644 ツリー ←次へ | 前へ→

【24499】csv出力の際のダブルコーテーション wada 05/4/23(土) 12:33 質問[未読]
【24501】Re:csv出力の際のダブルコーテーション Hirofumi 05/4/23(土) 13:19 回答[未読]
【24502】Re:csv出力の際のダブルコーテーション ichinose 05/4/23(土) 13:23 発言[未読]
【24503】Re:csv出力の際のダブルコーテーション wada 05/4/23(土) 14:02 質問[未読]
【24504】Re:csv出力の際のダブルコーテーション Hirofumi 05/4/23(土) 14:33 回答[未読]
【24507】Re:csv出力の際のダブルコーテーション wada 05/4/23(土) 18:47 お礼[未読]

【24499】csv出力の際のダブルコーテーション
質問  wada  - 05/4/23(土) 12:33 -

引用なし
パスワード
   シートのデータをcsv出力しています。

Sub TextOutput()

Worksheets("Sheet1").Select

Open ThisWorkbook.Path & "\" & "text.csv" For Output As #1

For i = 2 To 11

  Write #1, Cells(i, 1), Cells(i, 2), Cells(i, 3), Cells(i, 4), Cells(i, 5), _
        Cells(i, 6), Cells(i, 7), Cells(i, 8), Cells(i, 9), Cells(i, 10)

Next

Close #1

End Sub

たとえばsheet1に10行(1行目は見出し)10列のデータがあり、これらを出力(ファイル名text.csv)すると、各データがダブルコーテーションで囲まれますが、これをあとから取り除く方法があればご教示願います。
(たとえば、Close #1のあとに、再度データを読み込んでreplace関数でダブルコーテーションを空白に置き換えるとか)

【24501】Re:csv出力の際のダブルコーテーション
回答  Hirofumi  - 05/4/23(土) 13:19 -

引用なし
パスワード
   >たとえばsheet1に10行(1行目は見出し)10列のデータがあり、これらを出力(ファイル名text.csv)すると、各データがダブルコーテーションで囲まれますが、これをあとから取り除く方法があればご教示願います。
>(たとえば、Close #1のあとに、再度データを読み込んでreplace関数でダブルコーテーションを空白に置き換えるとか)

データに","やCrLfが有る場合、本来はダブルコーテーションが必要なんですがね?

Option Explicit

Sub TextOutput()

  Dim i As Long
  Dim j As Long
  Dim dfn As Integer
  Dim vntData As Variant
  Dim strBuff As String
  
  dfn = FreeFile
  Open ThisWorkbook.Path & "\" & "text.csv" For Output As #dfn
  
  With Worksheets("Sheet1")
    For i = 2 To 11
      vntData = .Cells(i, 1).Resize(, 10).Value
      For j = 1 To UBound(vntData, 2)
        If strBuff <> "" Then
          strBuff = strBuff & ","
        End If
        strBuff = strBuff & vntData(1, j)
      Next j
      Print #dfn, strBuff
      strBuff = ""
    Next i
  End With

  Close #dfn

End Sub

【24502】Re:csv出力の際のダブルコーテーション
発言  ichinose  - 05/4/23(土) 13:23 -

引用なし
パスワード
   wadaさん、Hirofumi さん、こんにちは。

>>たとえばsheet1に10行(1行目は見出し)10列のデータがあり、これらを出力(ファイル名text.csv)すると、各データがダブルコーテーションで囲まれますが、これをあとから取り除く方法があればご教示願います。
>>(たとえば、Close #1のあとに、再度データを読み込んでreplace関数でダブルコーテーションを空白に置き換えるとか)
>
>データに","やCrLfが有る場合、本来はダブルコーテーションが必要なんですがね?
私もそう思いますが・・・。
'========================================
Sub TextOutput2()
  Dim prdata As String
  Worksheets("Sheet1").Select
  Open ThisWorkbook.Path & "\" & "text.csv" For Output As #1
  For I = 2 To 11
   prdata = Join(Application.Transpose( _
         Application.Transpose( _
         Range("a" & I & ":j" & I).Value)), ",")
   Print #1, prdata
   Next
  Close #1
End Sub

確認してみて下さい。

【24503】Re:csv出力の際のダブルコーテーション
質問  wada  - 05/4/23(土) 14:02 -

引用なし
パスワード
   ▼ichinoseさん、Hirofumiさんありがとうございます。
実はcsvファイルをサーバーに登録する作業があるのですが、登録する際の仕様がダブルコーテーションを認めていないのです。(理由は分かりませんが)
現行では、scvファイルを一太郎やメモ帳で開き、編集の「置き換え」から " を 空白に置き換えてから、登録しています。
この置き換えの手間を省くことを考えており、投稿させてもらいました。
ご教示されたコードを参考にさせて頂きますが、もう一つ教えて下さい。
( i は行番号)
たとえば10列あるとし、4列目の日付フィールドをYYYYMMDD形式に変換(現行ではFormat(Cells(i, 4).Value, "YYYYMMDD"))、5列目の文字数を100文字に制限(現行ではLeft(Cells(i, 5), 100))、6列目に決まったテキストを挿入(たとえば ABC )、このように各フィールドの値を変換したりチェックしながら出力したいのですが、いい方法はありますか。

【24504】Re:csv出力の際のダブルコーテーション
回答  Hirofumi  - 05/4/23(土) 14:33 -

引用なし
パスワード
   特に言い方法は、有りませんが?
地道にやる他、無い様な気がします?

Sub TextOutput2()

  Dim i As Long
  Dim j As Long
  Dim dfn As Integer
  Dim vntData As Variant
  Dim strBuff As String

  dfn = FreeFile
  Open ThisWorkbook.Path & "\" & "text.csv" For Output As #dfn

  With Worksheets("Sheet1")
    For i = 2 To 11
      vntData = .Cells(i, 1).Resize(, 10).Value
      strBuff = vntData(1, 1)
      For j = 2 To UBound(vntData, 2)
        Select Case j
          Case 4
            vntData(1, j) = Format(vntData(1, j), "yyyymmdd")
          Case 5
            vntData(1, j) = Left(vntData(1, j), 100)
          Case 6
            vntData(1, j) = "ABC"
        End Select
        strBuff = strBuff & "," & vntData(1, j)
      Next j
      Print #dfn, strBuff
    Next i
  End With

  Close #dfn

End Sub

【24507】Re:csv出力の際のダブルコーテーション
お礼  wada  - 05/4/23(土) 18:47 -

引用なし
パスワード
   ▼Hirofumi さん:

大変参考になりました。
このやり方をもとに進めて行きたいと思います。また分からないことがあれば、どうぞよろしくお願いいたします。
ありがとうございました!

9972 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free