[[20080316140858]] 『既存テキストデータの先頭行へ出力』(makirin) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『既存テキストデータの先頭行へ出力』(makirin)

 VBAでテキストデータに書き出すとき
 Append モードで開いてから追記するところまではできたのですが
 これだと、既存の文章の後に"追記"されますよね・・・。

 後ろではなく、前に出力できるような方法ってありますか?

 具体的には、既存の文章の前(先頭行に)
 エクセル上で、とった連番と組み合わせた文字列で文書番号を出力させたいのです。
 (この部分は実装済みです)

 体裁上、文章の最後ではなく先頭に表示させたいのです。

 ちなみに、本文自体はエクセル上からの出力で作成したものではなく
 手書きで入力している文章です。

 よろしくお願いいたします。


 上書きしてはいかがでしょう?

http://officetanaka.net/excel/vba/file/file08.htm

 (MARBIN)


 MARBINさん、早速のご回答ありがとうございます。
 上書き(output)モードだと、
 既存の文章が消えちゃいます…

 あくまでも、既存の文章の前(先頭行に)出力したいのです。

 よろしくお願いいたします。(makirin)


 >上書き(output)モードだと、
 >既存の文章が消えちゃいます…

 違う名前のファイルにという意味だと思いますよ!!

 元ファイルA.txtに対して、A.tmpをOutputモードでオープンする

 A.tmpに対して、書き込む

 書き込み処理終了後、A.txtを削除する。

 A.tmpをA.txtに名前を変更する

 この手の処理では定番の手順です。

 検討してみてください

 ichinose


 ↓のような形を考えてました。
 一度InputでTXTの内容を読込んで先頭に入れたい文字と結合させる
 ↓
 TXTへOutputで書き込み
 (MARBIN)

 こんな感じでは?

 Sub test()
 Dim fn As String, txt As String
 fn = "c:\test.txt"
 txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll
 txt = "新しい一行目" & vbCrLf & txt
 Open Replace(fn, ".txt", "revised.txt") For Output As #1
     Print #1, txt
 Close #1
 End Sub

 上書きするのであれば Replace(fn, ".txt", "revised.txt")  を fn に変更
 (seiya)


 皆さん、早速のご回答ありがとうございます。

 MARBINさん、書き込んだ後良く考えたら考えに気づいたので
 早速試して報告しようとしたら、色々回答が付いていて驚きました(汗)
 うまく実装できました。ありがとうございます。

 seiyaさん、なるほど先に既存のデータを変数に入れてしまうのですね。
 これだと、読み込み用のシートが必要なくなりますね。
 あと、Replaceってこういう使い方するのか!勉強になりました。
 これだと、わざわざファイル名を変更するコードが必要なくなりますね。
 早速試してみようと思います。

 あぁー、頭が固いなぁと思う今日この頃(笑)
 皆さんのお力をお借りして、無事解決できました。
 ありがとうございました。(makirin)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.