アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBでテキストファイルの中身を開くプログラムを作成しました。

そのテキストファイルの中身を変更(編集)し、それを同じファイルに上書き保存するのではなく、開いたファイルのある同じフォルダ内に新しいファイルを作り保存したいと思っています。 
<例>test1.txtというファイルを開き中身を編集してそれを同じフォルダ内に新しくtest2.txtというファイルを作って保存するといった感じです。

そこで新しいファイル名で保存する(新しいファイルを作成する)方法を教えて欲しいんです、こんな説明で分かってもらえるか不安ですが…、どなたか分かる方教えていただけませんでしょうか?

かなりの初心者なのですが、私でも理解できるようなプログラムだと嬉しいです。
よろしくお願いします。

A 回答 (4件)

簡単にテキストデータを読み込んで書き込むといった感じの


プログラムを書いてみました。
dim strdata as string '文字列データ
dim temp as string '読込一時文字列保存用データ

'//text1.txt読込み
open app.path & "\text1.txt" for Input as #1
Do UNTIL EOF(1)
line input #1,temp
strdata=strdata & temp & vbcrlf
loop
close #1

'//strdataを編集

'//text2.txt書き込み
open app.path & "\text2.txt" for output as #1
print #1,strdata
close #1

基本的な部分も含めて説明しておきます。
app.pathとはアプリケーションを実行しているフォルダの位置を表します。
vbcrlfは改行を意味します。
DO UNTIL EOF(1) ~ loopは そのファイルが終端になるまで読み込むという意味です。
書き込む方はテキストデータをそのまま指定するだけでokです。
参考にして頂ければ幸いです。
    • good
    • 0
この回答へのお礼

関数の説明もしていただくなど、細かい心配り本当にありがとうございました。
お礼が遅くなってしまいましたが本当によい参考になりました!

お礼日時:2002/06/25 19:15

参考になればと思って送ります。


メモ帳で作ったファイルを読む方法の例
aには、"大阪","名古屋","東京"という風に入ります。
フィールドの切りだしが面倒です。「,」を探し求めて分割できます。
Sub test01()
Open "coment.txt" For Input As #1
While Not EOF(1)
Line Input #1, a
MsgBox a
s = 1
p = InStrB(s, a, ",")
MsgBox MidB(a, 1, p - 1 - 1)
s = p + 1
p = InStrB(s, a, ",")
MsgBox MidB(a, s + 1, p - s - 1)
Wend
Close #1
End Sub
----フィールドごとに読む方法
フィールドの数は1レコード毎に数は一定しているはずなので、何番目かを頼りに、目指すフィールドを探します。
Sub test02()
Open "coment.txt" For Input As #1
While Not EOF(1)
Input #1, a
MsgBox a
Wend
Close #1
End Sub
------書き出す方法
一部のフィールドを書きかえるには、書き換えたストリングを作り、末尾にvbCrLfを添えてprintで書き出します。
Mid関数や&を使うことになるでしょう。
Sub test03()
Open "c:\My Documents\abc.txt" For Output As #2
a = "大阪"
b = "名古屋"
c = "東京"
x = a & "," & b & "," & c & vbCrLf
MsgBox x
Print #2, x
Close #2
End Sub
他に念のため、Input#関数、PUTステートメント
も調べてみてください。
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません…。
とても分かりやすく説明していただき本当にありがとうございました。
Input#関数、PUTステートメントも調べてみますね!

お礼日時:2002/06/25 19:09

「VBでテキストファイルの中身を開くプログラムを作成しました。

」という一文から、既に読み込みは出来ていると思います。その読み込み先が、テキストボックス(マルチライン)であると想定して。。。。

まずフォーム上に用意するコントロール
・テキストボックス(マルチライン):text1
 これは既にあると思います。
・コマンドボタン(ファイル保存用):command1
・コモンダイアログ:commondialog1
 ツールボックス内に存在しない様であれば、
 ツールボックス内で右クリックして、
 コンポーネント選択後、"Microsoft Common Dialog~"
を選択して下さい。
 フォーム上に貼り付けたならば、CancelErrorプロパティ
をTrueにしておいてください。

すると以下のコーディングを
コマンドボタンのクリックイベントに書く事で
出来ます。

Private Sub Command1_Click()

On Error GoTo aaa

CommonDialog1.ShowSave
Open CommonDialog1.FileName For Binary As #1
Put #1, , Text1.Text
Close #1

Exit Sub
aaa:
If Err.Number = 32755 Then
MsgBox "キャンセル"
End If

End Sub

#1,#2さんとの違いはコモンダイアログを使用する事でディレクトリーの出力先を選択出来る事と、行単位の出力ではなく、一括でファイル出力可能な事です。

on error~という行と
aaa:という行はエラー出口を設定するためのもので、あまり、今回の趣旨とは関係ありませんが、コモンダイアログでキャンセルをされた場合の対処を行っているだけです。

コモンダイアログを開く時に、最初に表示される
ディレクトリーを指定しておきたいのであれば、
CommonDialog1.ShowSaveの前に
CommonDialog1.InitDir = ~
を設定しておけば良いと思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません…。
Vargasさんの”読み込み先が、テキストボックス(マルチライン)であると想定して。。。。 ”はどんぴしゃでした(^^)
とてもよい参考になりました!
本当に丁寧に教えていただいてありがとうございました。

お礼日時:2002/06/25 19:13

open ファイル名 For Output As ファイルナンバー


とOutputモードでオープンするとファイルが存在しない場合に新規作成を試みます。
Append、Binary、Randomでも同様です。

これを利用して、新規作成→書き込み→保存を行います。
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまいましたが回答ありがとうございました!
さっそく参考にしたいと思います。

お礼日時:2002/06/25 19:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!