■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#40587-0テキストファイルの文字列置換方法yuchan10332001-03-21(水) 15:34
     #40589-0RE#40587:テキストファイルの文字列置換方法トモ@あゆあゆ2001-03-21(水) 16:06
     #40742-0RE#40589:テキストファイルの文字列置換方法yuchan10332001-03-23(金) 20:05
     #40745-0RE#40742:テキストファイルの文字列置換方法トモ@あゆあゆ2001-03-23(金) 20:31
     #40794-0RE#40745:テキストファイルの文字列置換方法yuchan10332001-03-25(日) 13:53
#40587-0
テキストファイルの文字列置換方法
あるテキストファイルを読み込んで、文字列の置換を行うプログラムを作ろうとしていますが
うまくいきません。おそらく基本的なところで詰まってるのではないかと思いますが、
ご教示のほどよろしくお願いします。
以下のプロシージャで行おうと考えています。
【変数】
file→変換を行いたいテキストファイル
before→置換前の文字列
after→置換後の文字列
Function henkan(file, before, after)
Open file For Input Access Read As #1
Dim gyou As String
Do While Not EOF(1)
 Line Input #1, gyou
 replace(gyou, before, after) As String
 Loop
Open file For Output Access Write As #1
Close #1
End Function
#40589-0
RE#40587:テキストファイルの文字列置換方法
> あるテキストファイルを読み込んで、文字列の置換を行うプログラムを作ろうとしていますが
> うまくいきません。おそらく基本的なところで詰まってるのではないかと思いますが、
というか、これそのままだとエラーがでますね。

>  replace(gyou, before, after) As String
まず、Replace関数は変換後の言葉を吐き出します。
だから受け取ってあげなければいけません。

> Open file For Output Access Write As #1
同じファイル番号なのでこれを行う前に一度ファイルを閉じなければいけません。
でも、固有の数字を使うのはやめたほうがいいですね。
できればFreeFileをつかって取得した数字を使うべきだと思います。

さらにコレだけでは文字列をファイルに吐き出してくれません。
PrintなりWriteなり使ってあげないといけませんね。
開くだけでは何も行いません。
ついでにちょっと(一応使えるようにかなり適当に)書き換えたものを下に示します。

もしMSDNヘルプであれば
「Visual Basicの使用法」
 +「Visual Basicを使ってできること」
   +「ドライブ、フォルダ、ファイルの処理」
     +「従来のファイル入出力ステートメントおよび関数によるファイルの処理」
をいちど読んでみてはどうでしょうか?

Function henkan(File, Before, After)
Dim Gyou As String
Dim strText As String
    Open File For Input Access Read As #1

    Do While Not EOF(1)
    Line Input #1, Gyou
        Gyou = Replace(Gyou, Before, After)
        strText = strText & Gyou & vbCrLf
    Loop
    Close #1
    
    Open File For Output Access Write As #1
        Print #1, strText
    Close #1
End Function
#40742-0
RE#40589:テキストファイルの文字列置換方法
トモ@あゆあゆさん連絡遅れましたが、教えていただいたとおり修正しましてうまくいきました。
ありがとうございます。
今一度今回のまとめとしてお伺いしたいのですが、「vbcrlf」ってMSDNでひてみると
chr(10)chr(13)とかいてあったんですが、テキストデータを改行するいみかと解釈しました。
それではなぜchr(10)がいるのでしょうか?
それと以下では「strtext」にテキストデータを放り込んでいますが、容量的な制限はあるのでしょうか?
よろしかったら教えてください。

> > あるテキストファイルを読み込んで、文字列の置換を行うプログラムを作ろうとしていますが
> > うまくいきません。おそらく基本的なところで詰まってるのではないかと思いますが、
> というか、これそのままだとエラーがでますね。
> 
> >  replace(gyou, before, after) As String
> まず、Replace関数は変換後の言葉を吐き出します。
> だから受け取ってあげなければいけません。
> 
> > Open file For Output Access Write As #1
> 同じファイル番号なのでこれを行う前に一度ファイルを閉じなければいけません。
> でも、固有の数字を使うのはやめたほうがいいですね。
> できればFreeFileをつかって取得した数字を使うべきだと思います。
> 
> さらにコレだけでは文字列をファイルに吐き出してくれません。
> PrintなりWriteなり使ってあげないといけませんね。
> 開くだけでは何も行いません。
> ついでにちょっと(一応使えるようにかなり適当に)書き換えたものを下に示します。
> 
> もしMSDNヘルプであれば
> 「Visual Basicの使用法」
>  +「Visual Basicを使ってできること」
>    +「ドライブ、フォルダ、ファイルの処理」
>      +「従来のファイル入出力ステートメントおよび関数によるファイルの処理」
> をいちど読んでみてはどうでしょうか?
> 
> Function henkan(File, Before, After)
> Dim Gyou As String
> Dim strText As String
>     Open File For Input Access Read As #1
> 
>     Do While Not EOF(1)
>     Line Input #1, Gyou
>         Gyou = Replace(Gyou, Before, After)
>         strText = strText & Gyou & vbCrLf
>     Loop
>     Close #1
>     
>     Open File For Output Access Write As #1
>         Print #1, strText
>     Close #1
> End Function
#40745-0
RE#40742:テキストファイルの文字列置換方法
> 今一度今回のまとめとしてお伺いしたいのですが、「vbcrlf」ってMSDNでひてみると
> chr(10)chr(13)とかいてあったんですが、テキストデータを改行するいみかと解釈しました。
> それではなぜchr(10)がいるのでしょうか?
> それと以下では「strtext」にテキストデータを放り込んでいますが、容量的な制限はあるのでしょうか?

「vbCrLf」は本来「vbCr」と「vbLf」の組み合わせみたいなものです。
で、「vbCr」がChr(10)にあたるものだと思います。
ちなみに、「vbCr」と「vbLf」は改行の文字コードにあたるのですが、それはOSによってちがいます。
Windowsは「vbCrとvbLf」の組み合わせのコードで改行となるようになっているのです。
たぶん、普段使うものなのにいちいち分けるのには意味がないので、
「vbCrLf」という一括したものが用意されているのだと思います。
#と、そんな感じだとおもう。(^_^;)

あと、strTextの制限ですがDim ステートメントのヘルプをたどってString型を調べればわかりますが、
文字列型 (String)は可変長であれば約2GBまで格納できます。
なので実用上無制限に近いですね。
#もっとも、制限はもっと低い位置にあると思うのですが実用上はほぼ絶対に十分でしょう。
#1GBでも使いきれないでしょう。
#40794-0
RE#40745:テキストファイルの文字列置換方法
トモ@あゆあゆさん、いろいろ教えていただきありがとうございます。
今回は大変勉強になりました。今後もよろしくお願いします。

> > 今一度今回のまとめとしてお伺いしたいのですが、「vbcrlf」ってMSDNでひてみると
> > chr(10)chr(13)とかいてあったんですが、テキストデータを改行するいみかと解釈しました。
> > それではなぜchr(10)がいるのでしょうか?
> > それと以下では「strtext」にテキストデータを放り込んでいますが、容量的な制限はあるのでしょうか?
> 
> 「vbCrLf」は本来「vbCr」と「vbLf」の組み合わせみたいなものです。
> で、「vbCr」がChr(10)にあたるものだと思います。
> ちなみに、「vbCr」と「vbLf」は改行の文字コードにあたるのですが、それはOSによってちがいます。
> Windowsは「vbCrとvbLf」の組み合わせのコードで改行となるようになっているのです。
> たぶん、普段使うものなのにいちいち分けるのには意味がないので、
> 「vbCrLf」という一括したものが用意されているのだと思います。
> #と、そんな感じだとおもう。(^_^;)
> 
> あと、strTextの制限ですがDim ステートメントのヘルプをたどってString型を調べればわかりますが、
> 文字列型 (String)は可変長であれば約2GBまで格納できます。
> なので実用上無制限に近いですね。
> #もっとも、制限はもっと低い位置にあると思うのですが実用上はほぼ絶対に十分でしょう。
> #1GBでも使いきれないでしょう。
このページと関連する記事:
#4628-0RE#4625:line input ステートメントでの読みこみ1999-12-28(火) 02:46
#7061-0カレンダー作成2000-04-01(土) 04:46
#20778-0メモ帳の保存や開くを再現するには?2001-05-09(水) 14:44
#23384-0List Boxで','付きテキストを一列の項目に追加したい。2001-09-27(木) 12:54
#28109-0大容量ファイル読み込みのLINE INPUT#ステートメントについて2000-08-17(木) 14:26
#145-1ファイルシステムコントロ−ルの活用2003-12-05(金) 23:05
#9302-0テキストボックスへの読み込みで2000-07-01(土) 23:57
#46642-0ファイルの行数カウント2001-09-07(金) 11:56
#257-0VBS によるファイルアクセス1999-12-24(金) 08:17
#6899-0テキストファイルの入出力2000-03-25(土) 07:24
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)