No.8ベストアンサー
- 回答日時:
喜んでいただけて嬉しいのですが、小言を少し・・・
「意味不明です」なのであれば、私が張ったソースは使わない方がいいです。
何処ででもそうなのですが、教えてもらったソースや、情報が理解できないのであれば、理解するように努力して、理解できてから使うようにした方がいいです。
やろうと思えば、システムを壊す事も可能だということを頭の片隅にでも置いておいて欲しいです。
これからも何か開発をしようと思うなら大切な事だと思います。
で、理解してもらう為に以下のキーワードをヘルプなりで調べて理解してください。
そうすれば、自ずとsatoshi777さんのやりたいことのソースが出来上がって来ると思います。
===キーワード===
Open
FreeFile
Line Input
Replace
Scripting.FileSystemObject
================
小うるさい事を言ってすいません。
頑張ってください。
おはようございます。冷静になって、一つずつデバックで見ていって、一行ずつ説明書いていって、調べていったら少しずつわかってきました。僕なりにアレンジもして、いくつかの変更にも成功しました<(_ _)>小うるさい事とは思ってません、ありがたい助言として感謝しています<(_ _)>また何かあったら教えてください<(_ _)>
No.7
- 回答日時:
エラーが出るとか、できません言う前に
シーケンシャルファイルは、変更は、たとえ同じ文字数で置き換える場合でも、文字数が増えるならなおさら、別のファイルを1から(同じとこ(変更ないレコード)もコピーして作成)作るんだということを勉強すべきなんです。
各レコードが同じ長さで、項目構成や項目データ長が同じ固定長の場合は書き換えるというモードがあります。
以上がわれわれに許された方法ですが、プロになれば、ディスクを自分で自由に書ける(フィジカルにRead,Write)ようですが、質問者には
無縁の世界です。
回答の1-4はDOSBasic時代からあるステートメントが中心で使われており、そのころの方が上記のようなことを勉強する機会が多かったが
今は便利なところから入っちゃうので、かえって難しい。
おはようございます。おっしゃるとおりです<(_ _)>まずいろんなルールを理解して基礎をしっかり勉強したいと思います<(_ _)>助言ありがとうございます<(_ _)>
No.5
- 回答日時:
ファイルサイズにもよるかもしれませんが、それほどサイズが大きくないキストファイルなら、
・全部読む
・内容を編集する
・編集内容で上書きする
という方法が簡単だと思います。
Replace関数で、全行を置換をするのであれば、一行単位で編集を行うより効率的です。
Sub Test()
Dim strWk As String
'ファイル読み
Call FileRead("C:\test.txt", strWk)
'-----------------------------
'編集 "A" → ";A"
strWk = Replace(strWk, "A", ";A")
'行単位で編集を行いたいのであれば、Split(strWk,vbCrLf)として行分割
'Split関数は履歴で調べましょう
'-----------------------------
'ファイル書き
Call FileWrite("C:\test.txt", strWk)
End Sub
'ファイル読み
Private Sub FileRead(ByVal p_ファイル名 As String, ByRef p_内容 As String)
Dim objTst As Object 'TextStream
Dim strWk As String
Set objTst = CreateObject("Scripting.FileSystemObject").OpenTextFile(p_ファイル名, ForReading)
p_内容 = objTst.ReadAll
objTst.Close
Set objTst = Nothing
End Sub
'ファイル書き
Private Sub FileWrite(ByVal p_ファイル名 As String, ByVal p_内容 As String, Optional p_上書き As Boolean = True)
Dim objTst As Object 'TextStream
Set objTst = CreateObject("Scripting.FileSystemObject").OpenTextFile(p_ファイル名, ForWriting, p_上書き)
objTst.Write p_内容
objTst.Close
Set objTst = Nothing
End Sub
おはようございます。お久しぶりです。またまた助けられました<(_ _)>一行ずつ調べていって、やっと何をしてるのかわかりました。テキストファイルの内容を全て読み込んで、変更したい文字を変えてるんですね。次はSplit関数で行の方もやってみます。ありがとうございました<(_ _)>
No.4
- 回答日時:
ソース考えてみました。
こんな感じで、できるんじゃないかと。
但し、このソース実行してないので、動くか解りません。
また、読み込んだファイルが消えるはずなので、そこはBackUp取るなりしてもいいんじゃないかと。
あと、参照設定に「Microsoft Scripting Runtime」が必要かも。
ご使用は自己責任ということで・・・
=================================
Private Sub Command1_Click()
Dim FileNo_R As Integer
Dim FileNo_W As Integer
Dim F_NM_W As String
Dim F_NM_R As String
Dim TextLine_R As String
Dim Textline_w As String
Dim Fso As New Scripting.FileSystemObject
F_NM_R = "D:\test_r.txt"
F_NM_W = "D:\test_w.txt"
FileNo_R = FreeFile
Open F_NM_R For Input Access Read Lock Write As #FileNo_R
FileNo_W = FreeFile
Open F_NM_W For Output Access Write Lock Write As #FileNo_W
Do While Not EOF(FileNo_R)
Line Input #FileNo_R, TextLine_R
Textline_w = Replace(TextLine_R, "A", ";A")
Print #FileNo_W, Textline_w
Loop
Close #FileNo_R
Close #FileNo_W
Fso.DeleteFile F_NM_R
Fso.MoveFile F_NM_W, F_NM_R
End Sub
=================================
この回答への補足
すごいです(>_<)ビックリです!意味不明です(>_<)しかし、完璧です!!ファイルも勝手に作られてたし、すごいの一言です!!!もう少し教えてください<(_ _)>このAを;Aに変更するのと同じなので、B、C、Dぐらいまであります。その場合は一体どうすればよいでしょうか?自分でやりたいのは山々なのですが、まったくわからないというのが現状の実力です。もしよろしければ考えてやってください<(_ _)>よろしくお願いします<(_ _)>
補足日時:2005/09/08 15:33No.2
- 回答日時:
Open中に書き換える場合は、
Open "C:\HOGE.txt" For Random As #intFF
で、Get,Putで読み出し、書き込みができます。
ですが、これをやる場合は文字数が書き換えの前後で
替わってはいけません。
文字数が替わる場合は、元のファイルに直接更新するのではなく、
読んだ分を別ファイルに書き出すか、
件数がそれほど多くないなら配列に一旦格納して、最後に一旦閉じてからOutputで開き直して全件出力させます。
この回答への補足
文字数が増えるのでダメですね(>_<)全部読み込んで、変更して、書き込むってのが僕的には一番わかりやすいです。変更箇所が4箇所もあるので、パニックです(>_<)えぇっと、Do while not で全部読み込んで、変数で変更していって、読み込みが終わったら、次にまたファイルをOutputでOpenして、さっき読み込んだのを書き込むんですよね?手順はあってますでしょうか?なんて難しいんだぁ(>_<)
補足日時:2005/09/08 15:27No.1
- 回答日時:
ご存知かもしれませんが,エラーの内容が不明なので,基本的なことだけ。
読み込むときのOpenの仕方はInput,書き込むときはOutputです。
まずInput形式でOpenした後,Aを探して,見つけたらA;に変換します。
次に,開いているファイルを閉じます。
最後にOutput形式でOpenして書きこみます。
お役に立てれば幸いです。
この回答への補足
ありがとうございます。まず読み込んで、次に書き込むんですね!!やってみます。順序は、読み込みながら、変数を変更しながらってのでよろしいんでしょうか?mytext = "A" mytext=";A"って感じで変更しながらでしょうか?哀しくなるくらいの素人で申し訳ありませぬ<(_ _)>
補足日時:2005/09/08 15:24お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
テキストファイル中の文字列の置換
Visual Basic(VBA)
-
テキストボックスの入力制限
Visual Basic(VBA)
-
VB6.0 ファイルの一括読込み
Visual Basic(VBA)
-
-
4
VBプログラムの終了
Visual Basic(VBA)
-
5
VB6側からテキストファイルをクリアにする方法
Visual Basic(VBA)
-
6
【VB6.0】 あるフォームから他のフォームへ値を受け渡したい
Visual Basic(VBA)
-
7
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
8
[VB6] フォームを閉じる方法について
Visual Basic(VBA)
-
9
DoEventsがやはり分からない
Visual Basic(VBA)
-
10
VB6で、長い時間かかる処理実行中の表示の工夫について
Visual Basic(VBA)
-
11
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
12
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
13
VB6.0 テキストファイルの操作について
Visual Basic(VBA)
-
14
VB6.0 文字列のファイル書き込み
Visual Basic(VBA)
-
15
VBでクリックイベントを発生させたいです
Visual Basic(VBA)
-
16
VBのReturnの使い方
Visual Basic(VBA)
-
17
テキストボックスの中身をリセット(クリア)したい
Visual Basic(VBA)
-
18
ある文字列が全て数字であるかどうかをチェックするには?
Visual Basic(VBA)
-
19
[VB6]プログレスバーコントロールの使用法について
Visual Basic(VBA)
-
20
VB6のReplace関数の使い方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visualbasicの現状について教え...
-
【VBA】 結合セルに複数画像と...
-
VB.net(VB)で、フォームにExcel...
-
VBA 別ブックから条件に合うも...
-
VBA 別ブックからコピペしたい...
-
VBA 2次元配列の出力
-
VBAでセルの書式を変えずに文字...
-
Excelのマクロについて教えてく...
-
ExcelのVBAコードについて教え...
-
vbs ブック共有を解除
-
【ExcelVBA】5万行以上のデー...
-
[Excel VBA]特定の条件で文字を...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
【VBA】スペースが入っていない...
-
【VBA】値を変更しながら連続で...
-
【ExcelVBA】インデックスが有...
-
Excel VBAで値を変えながら、pd...
-
WindowsのOutlook を VBA から...
-
エクセルvbaの対象セルに色をつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイナポータルの住宅借入金当...
-
ExcelVBAマクロで実行した時の疑問
-
VB6にて、テキストファイルの内...
-
ftpコマンドの戻り値をチェック...
-
簡単にEXEファイルを作れるプロ...
-
JCL(富士通/MSP)について教...
-
ISOファイルの編集方法
-
VBAのzip解凍についてのご質問です
-
秀丸エディタでのファイル分割
-
VB Scriptで隠しファイル、フォ...
-
warファイル 「種類:WAR ファ...
-
ファイルと同名のフォルダを作成
-
VB.NETでフォルダの一覧を更新...
-
exeファイルの編集
-
コマンドプロンプト "expand" ...
-
C++ ビルドエラー C1083
-
HTMLでファビコンを変更したいです
-
VB6.0 テキストファイルの操作...
-
binファイルの解凍
-
FTPコマンドのリターンコー...
おすすめ情報