OS:windows2000pro
VB:VB6.0sp5
c:\data.csv(カンマ区切) のデータ(全6列)で
1列目,2列目,3列目,4列目,5列目,6列目
[変換前(全6列)]
abc,a1,aあ b2,3c,4d5e (1行目)
ccc,c3,aあ い,3c,4d5e (2行目)
bbc,b2,あ b2a,c3,d5e4 (3行目)
[変換後(全6列)]
abc,a1,"aあ b2",3c,"4d5e" (1行目)
ccc,c3,"aあ い",3c,"4d5e" (2行目)
bbc,b2,"あ b2a",c3,"d5e4" (3行目)
上記の様に 3列,6列目を「"・・・"」ダブルコーテイションで
囲い(変換し)、c:\data_after.csvというファイル名で
保存する為のプログラムをご教示ください
よろしくお願いいたします
No.1
- 回答日時:
こんにちは、じゃんぬねっと です。
まるまる教えるのは楽しくないので、ちょっと考え方だけ。
InStr 関数を使うと、検索文字の位置を返すことができます。
これを利用して、2 回目のカンマを取得し、
その後に ダブルクォーテーション ("""") を付加。
さらに、2 回目のカンマの位置から InStr を実行し、
次のカンマの前にも、ダブルクォーテーション ("""") を付加。
# Split 関数を使って Join で戻す方法が 1 番簡単そうではありますが。
これらをファイルに書き込む。
No.2ベストアンサー
- 回答日時:
Dim fso, inf, outf, aLine, field
Set fso = CreateObject("Scripting.FileSystemObject")
Set inf = fso.OpenTextFile("c:\data.csv",1)
Set outf = fso.OpenTextFile("c:\data_after.csv",2,true)
Do until inf.AtEndOfStream
aLine = inf.ReadLine
field = split(aLine,",") 'カンマでフィールドに分ける
field(2)="""" & field(2) & """"
field(4)="""" & field(4) & """"
aline = join(field,",")
outf.WriteLine(aline)
Loop
inf.Close
outf.Close
No.3
- 回答日時:
昔のDOS-Basic時代からWRITE #という出力ステートメントがあって、VBでも使えるはずです。
文字列は””で囲ってくれるので都合がよいのですが、改行が終わりに入ってしまうので使えないようです。変換前は、例ではSPLIT関数で5列の扱いとなり
3,5、列に””を囲うことになります。配列では2,4番目ですね。
あと復帰改行を毎行入れることですね。
参考例
本当はaはLine Inputで代入される文字列。
Sub test04()
a = "a,b,c,d,r,f"
st = Split(a, ",")
s = ""
For i = 0 To UBound(st)
If i = 3 Or i = 5 Then
s = s & "," & """" & st(i) & """"
Else
s = s & "," & st(i)
End If
Next
MsgBox s
End Sub
No.4
- 回答日時:
質問は
Data.csv から データを読込み 3列,6列目をダブルコーテイションで囲いdata_after.csvに保存。
と言う事ですかね。
Da$="aあ b2"
Print #1, ","; Chr$(34); Da$; Chr$(34);
とすれば、「,"aあ b2"」とprint 出来ます。
これで良いのでは。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Excel(エクセル) スプレッドシートについて A1÷B1の値をC1に、A2÷B2をC2、A3÷B3をC3…といった感じで 1 2022/05/17 20:24
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- その他(Microsoft Office) Excel 2列の値を返す数式についてです 1 2022/11/23 22:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
複数のcsvファイルをExcelに一...
-
CSV形式での保存時に”文字列...
-
csvファイルでの日付設定「yyyy...
-
ADODBでSQL実行前にレコードセ...
-
複数のCSVファイルのAccessテー...
-
データ解析ソフトRでのファイル...
-
【C#】パス名で無効な文字
-
csvファイルを列数ごとに分割す...
-
【ExcelVBA】UTF-8の文字コード...
-
COBOL85でのCSVファ...
-
VBAでcsvファイルを読み込んで...
-
csvファイル 項目数取得
-
CSVファイル作成
-
エクセルVBA 大容量CSVファイル...
-
vb2010でCSVファイルを並び替え...
-
ファイル名ないにあるカンマを...
-
エクセルで運転時間を見たい
-
マクロから出力されるcsvのダブ...
-
ファイルのアクセス回数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
CSV形式での保存時に”文字列...
-
複数のcsvファイルをExcelに一...
-
csvファイル 項目数取得
-
csvファイルでの日付設定「yyyy...
-
バッチでCSVを処理する時、空の...
-
マクロから出力されるcsvのダブ...
-
csvファイルを列数ごとに分割す...
-
エクセル形式のファイルの読み込み
-
csvファイルのデータの一部を取...
-
エクセルVBA 大容量CSVファイル...
-
CSVファイル作成
-
EXCEL|csvで保存→開くcsvを閉じる
-
CSVファイルの項目行を削除...
-
巨大なCSVの加工(指定列のみの...
-
データ解析ソフトRでのファイル...
-
VBAでCSVファイルのデータを集...
-
【ExcelVBA】UTF-8の文字コード...
-
【C#】パス名で無効な文字
-
特定文字を入ってるCSVの特定の...
おすすめ情報