■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#28614-0続・ファイル内の文字列を置換したい。ソロモン2002-05-10(金) 14:57
     #28617-0RE#28614:続・ファイル内の文字列を置換したい。せつら2002-05-10(金) 15:29
     #28630-0RE#28617:続・ファイル内の文字列を置換したい。【解決?】ソロモン2002-05-10(金) 20:16
#28614-0
続・ファイル内の文字列を置換したい。
さきほどは質問に答えて頂き本当にありがとうございました。
あれから他の技術系メーリングリストの過去ログを漁ってみたところ、
次のような記述を発見しました。

---------------以下ログ-----------------------------
以下は、Wordのマクロです。
インポート元(CSVファイル)の情報によってインポートされる側
(Wordファイル内の文)が置換されるというものです。

以下は、インポート元のファイルをInputBox$("ファイル名を入力", "
入力")で指定し、インポート先にある、言葉A(たとえば、「テキスト
1」)に インポート元の 言葉B(たとえば、「これは、公開用文書
です」)を入れ込むモジュールです。

sfieldname$, sstring$ は インポート元で「テキスト1,これは、
公開
用文書です」となっていて、インポート先にある「テキスト1」
(sfieldname$)を「これは、公開用文書です」(sstring$)に置き換
えるということをしています。
=====================================================
Dim sFieldName$, sString$

Sub MAIN
    aaa$ = InputBox$("ファイル名を入力", "入力")
    ChDefaultDir "c:\", 0
	Open aaa$ For Input As #1

	While Not Eof(1)
		Input #1, sfieldname$, sstring$
		EditReplace .Find = sfieldname$, .Replace = 
sstring$, .Direction = 0, .WholeWord = 0, .MatchCase = 0, .
MatchByte = 0, .PatternMatch = 0, .SoundsLike = 0, .
FindAllWordForms = 0, .FuzzyFind = 1, .ReplaceAll, .Format = 0, .
Wrap = 1
	Wend

	Close #1
End Sub
---------------以上ログ-----------------------------
これによるとWORD内のファイルの文字列の置換に成功してるように見受けられるの
ですがどうでしょうか?
ただ初心者たる私にはなにをどうしているのかがわからないのです。(−−;)
これを応用することはできないものでしょうか?
質問ばかりしてしまい猛省しておりますができましたらまた
ご指導の方よろしくお願いいたします。

>いつもお世話になっております。
>現在VBのopenステートメントを利用してファイルを作成しております。
>そこで質問なのですが任意のファイルの中の文字列を置換する方法ってあるのでしょうか?
>
>具体的な作業は
>test.csv
>--------------------以下ファイルの中身------------------------------
>レコード件数,1,711
>2,2,"7111",200210,1473700309,43
>2,3,"7111",200210,1473700309,55
>2,4,"7111",200210,1473700309,67
>2,5,"7131",200210,1473700309,78
>--------------------以上ファイルの中身------------------------------
>このようなファイルが存在するとして、
>この「レコード件数」というところに列数を入れたいのです。(この場合は5。)
>この「レコード件数」の列を後から入れられればいいのですが
>printステートメントでは順番にしか文字列を入れられないようなので・・・。
>なんかとっても初心者な質問かもしれませんがご助力いただければ幸いです。
>別の方法でも嬉しいです。
>よろしくお願いいたします。

#28617-0
RE#28614:続・ファイル内の文字列を置換したい。
う〜ん、残念ながら、その情報は今回のファイルの一部置換とは関係ないと思いますよ。

Word 内の単語を置き換えたとしても、ファイルの中が変わるわけではないです。 ファイルが変わる
のは、Word がファイル保存したときであり、ワードが最初から最後まで、全情報を書き直しているの
ですよ。

ちなみに、unix なら色々とファイル内の文字列置換コマンドがあるので、1命令でおっしゃる事が
実現できたりするのですが、その命令内ではやはり、先の説明のような全レコード出力を行っている
のですね。

言葉で書いても判りにくければ、コードで書いてみましょうか。 配列代わりに、ListBox をひとつ
貼っておいてください。

Private Sub Command1_Click()
    Const cOrg As String = "c:\aaa.txt"
    Const cTmp As String = "c:\aaa.tmp"
    Const cBak As String = "c:\aaa.bak"

    Dim cw As String
    Dim i As Integer

    With List1
        .Clear

        Open cOrg For Input As #1
        While EOF(1) = 0
            Line Input #1, cw
            .AddItem cw
        Wend
        Close #1

        cw = Replace(.List(0), "レコード件数", CStr(.ListCount - 1))
        .List(0) = cw

        Open cTmp For Output As #1
        For i = 0 To .ListCount - 1
            Print #1, .List(i)
        Next i
        Close #1
    End With

    If Dir(cBak) <> "" Then
        Kill cBak
    End If

    Name cOrg As cBak
    Name cTmp As cOrg
End Sub

なんでわざわざファイルのバックアップやらテンポラリやらを作るのかというと、実行途中で不測の
事態でプログラムが強制終了してしまったときでも、オリジナルのファイルが無くなる事を防ぐため
ですね。
#28630-0
RE#28617:続・ファイル内の文字列を置換したい。【解決?】
返信遅れました。
度重なる解答本当にありがとうございます。

> う〜ん、残念ながら、その情報は今回のファイルの一部置換とは関係ないと思いますよ。
> 
> Word 内の単語を置き換えたとしても、ファイルの中が変わるわけではないです。 ファイルが変わる
> のは、Word がファイル保存したときであり、ワードが最初から最後まで、全情報を書き直しているの
> ですよ。

なるほど・・・。あわよくば使えるかなと思っていたのですが・・・。
なかなか世の中うまく行かないようで・・・。(^^;)

> ちなみに、unix なら色々とファイル内の文字列置換コマンドがあるので、1命令でおっしゃる事が
> 実現できたりするのですが、その命令内ではやはり、先の説明のような全レコード出力を行っている
> のですね。
> 
> 言葉で書いても判りにくければ、コードで書いてみましょうか。 配列代わりに、ListBox をひとつ
> 貼っておいてください。

サンプルソースありがとうございます。
をを、やはり実際に動かしながらだと理解しやすいです。(^^;)

結局別のファイルを作成してそっちに一行づつprintする間にreplace関数で置換することにしました。
VB6.0で良かったです〜♪
本当にありがとうございました。
このページと関連する記事:
#28607-0ファイル内の文字列を置換したい。2002-05-10(金) 13:01
#40587-0テキストファイルの文字列置換方法2001-03-21(水) 15:34
#10424-0ファイルの中身を置換する方法1999-11-26(金) 11:28
#6986-0ディレクトリ検索方法2000-03-29(水) 17:33
#47099-0CSVファイルの比較方法2001-09-21(金) 20:40
#20997-0不一致行のチェックプログラム2002-05-31(金) 11:30
#421-0Word文書2000-04-28(金) 09:37
#11058-0テキストファイルを読み込む2000-09-01(金) 17:12
#1233-0どんな参考書がおすすめでしょうか?2000-12-13(水) 23:47
#18090-0VBからWordに対して2000-03-17(金) 07:49
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)