• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでCSVの1行目だけを書き換える方法)

VBAでCSVの1行目だけを書き換える方法

このQ&Aのポイント
  • VBAを使用して、CSVファイルの1行目だけを書き換える方法について質問します。
  • 例えば、CSVファイルの1行目にはデータラベルがあり、2行目以降には数値データが記録されています。
  • VBAを使用して、マクロのセルに入力された新しいデータラベルで、CSVファイルの1行目を置き換えたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

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

liquidengine7a
質問者

お礼

サンプルまで示して頂き、ありがとうございました。 やはり基本的に書き換えることは出来ないようなので、時間はかかりますがその方針で行こうと思います。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

1行だけの変更でも 今あるデータはあくまでデータとして、作るものは別に新しく全部作ることになる。 (1)第1レコート(見出しの1行=1レコードデータ)はプログラムでつくり、新しいファイルに書き出す (2)今あるファイルの1行目は、読んで読み飛ばし (3)今あるファイルの第2レコードを読む 新しいレコードとして新しいファイルに書き出しする。 (4)(3)を最後のレコードまで繰返す。 (5)両ファイルをCLOSEする この基本線を抑えてないから質問になる。 固定長のランダムファイル以外はファイルの一部書き換えはしないのだ。 そういうことをスクールででも行って(や先輩から聞いて)学習してないで、VBAに入るからこういう質問になる。

liquidengine7a
質問者

お礼

ご指摘ありがとうございます。 >そういうことをスクールででも行って(や先輩から聞いて) 個人が置かれた状況は様々で、そういう事をする代用の手段としてこの様な掲示板が存在するのだと思っています。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

コードが一行だったとしても、実際の作業としては全行読み出し、 新規ファイルに書き出しということになるんじゃないかな。 http://q.hatena.ne.jp/1075191001

liquidengine7a
質問者

お礼

ありがとうございました。 ご指摘の通りのようです。

関連するQ&A