ここから本文です

テキストファイルの内容の読み込みおよび書き出しについて CSV形式のファイルがあ...

rut********さん

2008/12/410:47:22

テキストファイルの内容の読み込みおよび書き出しについて
CSV形式のファイルがあり、その内容の一部を読み込み、エクセル上で変更し、元のファイルに書き出す。
このような処理のマクロを組みたいのです。

【サンプルデータ】
0805131100,0009580,0000001,(半角空白20文字)
0805132220,0009580,0000002,(半角空白20文字)
0805141450,0009581,0000003,開始時刻(半角空白12文字)
0805141930,0009581,0000004,(半角空白20文字)
0805160300,0009583,0000005,(半角空白20文字)

とデータが4列あります。
このうち、最初の一列だけをエクセルに読み込み、エクセル上でデータを変更し、もとのファイルに書き込みたいのです。
ちなみに変更した後のデータの桁数は変わりません。

最初の1列のみ読み込むコードと、最初の一列のみ書き出すコードのサンプルを示していただけないでしょうか?
私は、基本的なマクロの操作については理解しているレベルだと思います。
よろしくお願いします。

補足返信ありがとうございました。
言葉が足りませんでした。申し訳ありません。

上記のサンプルから、下記に示す最初の一列目を抜き出し、抜き出した部分だけを元のテキストデータに書き込みたいのです。

【抜き出す部分】
0805131100
0805132220
0805141930
0805160300

尚、抜き出すコードは出来ていて問題ないのですが、書き込みのコードを試行錯誤中です。
引き続きよろしくお願いします。

閲覧数:
1,113
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

lit********さん

編集あり2008/12/411:33:13

open "c:\aaa.csv" for input as #1
open "c:\bbb.csv" for output as #2

do until eof(1)
line input #1,textline
range("A1")=textline
print #2,textline
loop


close #1
close #2

結局1列目だけの上書きはできないので1行づつ全部読み込んで
最吐出しする必要があります
上記のサンプルはコピーしているのと一緒です
後読み込みは行単になります

修正したのでも一回見てください

質問した人からのコメント

2008/12/4 15:00:47

ベストアンサーは先に回答を頂いた方としましたが、お二方ともありがとうございました。大変勉強になりました!
お二方の回答を見て、列のみの修正というのは諦めました。

別の角度から、ファイルの修正方法を検討してみたいと思います。

ちょっと角度を変えた質問をしようと思いますので、その際はまたよろしくお願いします。

ベストアンサー以外の回答

1〜1件/1件中

んなっとさん

2008/12/412:53:56

FileSystemObjectを使うとこんな感じでしょうか?

Const ForReading = 1
Const ForWriting = 2
Const File_Name = "D:\Test.csv"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set myFile = FSO.OpenTextFile(File_Name, ForReading)
With myFile
Do Until .AtEndOfStream
myLine = .ReadLine
myLine = Left(myLine, InStr(myLine, ",") - 1)
myStr = myStr & myLine & vbCrLf
Loop
.Close
End With
Set myFile = FSO.OpenTextFile(File_Name, ForWriting)
With myFile
.Write myStr
.Close
End With

何もExcel VBAにこだわらなくていいので、
メモ帳で~.vbsで保存してもいいですね。
5行→4行に減っているのが、「開始時刻」
のあるなしの違いなら...

Const ForReading = 1
Const ForWriting = 2
Const File_Name = "D:\Test.csv"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set myFile = FSO.OpenTextFile(File_Name, ForReading)
With myFile
Do Until .AtEndOfStream
myLine = .ReadLine
myTmp = Split(myLine, ",")
If Left(myTmp(3), 4) <> "開始時刻" Then
myStr = myStr & myTmp(0) & vbCrLf
End If
Loop
.Close
End With
Set myFile = FSO.OpenTextFile(File_Name, ForWriting)
With myFile
.Write myStr
.Close
End With

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる