- ベストアンサー
VBAでCSVの1行目だけを書き換える方法
- VBAを使用して、CSVファイルの1行目だけを書き換える方法について質問します。
- 例えば、CSVファイルの1行目にはデータラベルがあり、2行目以降には数値データが記録されています。
- VBAを使用して、マクロのセルに入力された新しいデータラベルで、CSVファイルの1行目を置き換えたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Excel VBAには可変長のランダムアクセスが無いので,一回スルーで読み書きが必要になりますね。 簡単に作ってみた例: sub macro1() dim FSO as object dim s1 as object dim s2 as object dim buf as string set fso = createobject("Scripting.FileSystemObject") set s1 = fso.opentextfile(thisworkbook.path & "\data.csv", 1) set s2 = fso.opentextfile(thisworkbook.path & "\out.csv", 2, true) buf = "Anew,Bnew,Cnew,Dnew" s1.skipline s2.writeline buf s2.write s1.readall s1.close s2.close set fso = nothing end sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
1行だけの変更でも 今あるデータはあくまでデータとして、作るものは別に新しく全部作ることになる。 (1)第1レコート(見出しの1行=1レコードデータ)はプログラムでつくり、新しいファイルに書き出す (2)今あるファイルの1行目は、読んで読み飛ばし (3)今あるファイルの第2レコードを読む 新しいレコードとして新しいファイルに書き出しする。 (4)(3)を最後のレコードまで繰返す。 (5)両ファイルをCLOSEする この基本線を抑えてないから質問になる。 固定長のランダムファイル以外はファイルの一部書き換えはしないのだ。 そういうことをスクールででも行って(や先輩から聞いて)学習してないで、VBAに入るからこういう質問になる。
お礼
ご指摘ありがとうございます。 >そういうことをスクールででも行って(や先輩から聞いて) 個人が置かれた状況は様々で、そういう事をする代用の手段としてこの様な掲示板が存在するのだと思っています。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
コードが一行だったとしても、実際の作業としては全行読み出し、 新規ファイルに書き出しということになるんじゃないかな。 http://q.hatena.ne.jp/1075191001
お礼
ありがとうございました。 ご指摘の通りのようです。
お礼
サンプルまで示して頂き、ありがとうございました。 やはり基本的に書き換えることは出来ないようなので、時間はかかりますがその方針で行こうと思います。