とっておきの「まかない飯」を教えて下さい!

ExcelのデータをCSV保存するのですが、
カンマ区切りのみですよね。
ダブルクォーテーションで括ってCSV保存するのをVBAで実現できないでしょうか?
何列何行を指定しなくてもあるがまま書き出してくれたら助かるんですが・・・

A 回答 (2件)

こちらの方法が分かりやすいかと思います。



https://excel.kuuneruch.com/make-dc-file/#%EF%BC …
    • good
    • 0
この回答へのお礼

記載の手順通りにやったらできました!
ありがとうございます!

お礼日時:2021/06/17 17:27

こんばんは



マクロを使えば可能です。

いかのサイトに、普通に保存する方法と、ダブルクォーテーション付きで保存する方法の両方が紹介されています。
ただし、データ内にダブルクォーテーションが含まれるような場合には、事前処理する必要がありますけれど…
https://www.tipsfound.com/vba/18016
    • good
    • 0
この回答へのお礼

ありがとうございます。

・セル単位にダブルクォーテーションを付けてくフロー
・EドライブのTips.csvに書き込むフロー

上記2点を繋げてみましたが動きません><
※文字数オーバーで途中証楽しています。

----------
Sub CSV書き込み()

Dim CSV As String ' CSV に書き込む全データ
Dim line As String ' 1 行分のデータ

' CSV のシートを選択
Dim ws As Worksheet
Set ws = ActiveSheet ' 選択しているシート
'Set ws = Sheets(1) ' 左から 1 番目のシート
'Set ws = Sheets("Sheet1") ' Sheet1 という名前のシート

' データの範囲を選択
Dim region As Range
Set region = ws.Range("A1").CurrentRegion ' セル「A1」を含むデータの範囲を取得
'Set region = ws.UsedRange ' シートで使用されている最大の範囲を取得

' 見出し行を取り除く
'Set region = region.Offset(1, 0) ' 範囲を 1 行下にずらす

・ 【途中省略】


' 行を結合
If CSV = "" Then
CSV = line
Else
CSV = CSV & vbCrLf & line
End If

Next
' 書き込み処理

Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim ts As TextStream
Set ts = fso.OpenTextFile("E:\Tips.csv", ForWriting, True)

ts.write (CSV) ' 書き込み

ts.Close ' ファイルを閉じる

' 後始末
Set ts = Nothing
Set fso = Nothing

End Sub

お礼日時:2021/06/16 21:59

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A