
VBでテキストファイルの中身を開くプログラムを作成しました。
そのテキストファイルの中身を変更(編集)し、それを同じファイルに上書き保存するのではなく、開いたファイルのある同じフォルダ内に新しいファイルを作り保存したいと思っています。
<例>test1.txtというファイルを開き中身を編集してそれを同じフォルダ内に新しくtest2.txtというファイルを作って保存するといった感じです。
そこで新しいファイル名で保存する(新しいファイルを作成する)方法を教えて欲しいんです、こんな説明で分かってもらえるか不安ですが…、どなたか分かる方教えていただけませんでしょうか?
かなりの初心者なのですが、私でも理解できるようなプログラムだと嬉しいです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
簡単にテキストデータを読み込んで書き込むといった感じの
プログラムを書いてみました。
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です。
参考にして頂ければ幸いです。
関数の説明もしていただくなど、細かい心配り本当にありがとうございました。
お礼が遅くなってしまいましたが本当によい参考になりました!
No.4
- 回答日時:
参考になればと思って送ります。
メモ帳で作ったファイルを読む方法の例
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ステートメント
も調べてみてください。
お礼が遅くなってすみません…。
とても分かりやすく説明していただき本当にありがとうございました。
Input#関数、PUTステートメントも調べてみますね!
No.3
- 回答日時:
「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 = ~
を設定しておけば良いと思います。
お礼が遅くなってすみません…。
Vargasさんの”読み込み先が、テキストボックス(マルチライン)であると想定して。。。。 ”はどんぴしゃでした(^^)
とてもよい参考になりました!
本当に丁寧に教えていただいてありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- グループウェア 一太郎がイントラで開けません。対処方法を知りたいです。 3 2023/04/04 13:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
エクセルのVBAコードと数式につ...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
-
【マクロ】切取りの場合、形式...
-
改行文字「vbCrLf」とは
-
ExcelVBAでパワポを操作したい
-
testファイル内にある複数のpng...
-
エクセルVBA 検索結果を隣のシ...
-
Excelマクロで使うVBAコードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報