SAK 図書館
VB テクニック編36 - テキストファイル内文字列検索、ファイル内文字列置き換え
■SAK 関数利用規程 ・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。 ・著作権明示部分の改編は認めない。 ・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや プログラムを開発することは自由です。 ・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、 その他有償プロダクトとして配布・販売するには、私の許可が必要です。 (無償のフリーソフトウェアなら、自由に配布しても良い。) ・これらの関数を使用して発生した、いかなる形での損害も私こと Y.SAK は 賠償しません。 ■テキストファイル内文字列検索 ・テキストファイル、ソースプログラムなどの文字列を検索するには、 次のようにする。 この例では、大文字小文字の区別はしないようにしている。 Private Sub Command1_Click() dim ct as long ct = CntStr("g:\tmp\test.frm", "label") select case ct case -1 msgbox "オープンエラー" case -2 msgbox "リードエラー" case else msgbox "文字列出現回数 = " & ct end select End Sub Public Function CntStr(fnm as string, key as string) as long dim fno as integer dim ct as long dim rec as string dim s as string dim i as long dim j as long '** エラーセット CntStr = -1 '** エラートラップ開始 on local error resume next '** ファイルオープン fno = freefile open fnm for input as fno len = 32000 if err <> 0 then exit function '** 文字列検索 s = lcase(key) j = len(key) ct = 0 do until eof(fno) line input #fno, rec rec = lcase(rec) i = instr(rec, s) do until i = 0 ct = ct + 1 i = instr(i + j, rec, s) loop loop if err <> 0 then ct = -2 '** ファイルクローズ close fno '** エラートラップ開始 on local error goto 0 '** 正常終了セット CntStr = ct End Function ■テキストファイル内文字列置き換え ・テキストファイル、ソースプログラムなどの文字列を置き換えるには、 次のようにする。 この例では、置き換え前の文字列検索に大文字小文字の区別はしないように している。 Private Sub Command1_Click() dim ct as long ct = RepFile("g:\tmp\test.frm", "g:\tmp\test2.frm", "label", "TestRep") select case ct case -1 msgbox "オープンエラー" case -2 msgbox "リードエラー" case else msgbox "文字列置き換え回数 = " & ct end select End Sub Public Function RepFile(fnm as string, fnm2 as string, key as string, rep as string) as long dim fno as integer dim fno2 as integer dim ct as long dim rec as string dim s as string dim i as long dim j as long dim k as long '** エラーセット RepFile = -1 '** エラートラップ開始 on local error resume next '** ファイルオープン fno = freefile open fnm for input as fno len = 32000 if err <> 0 then exit function fno2 = freefile open fnm2 for output as fno2 len = 32000 if err <> 0 then close fno exit function end if '** 文字列置き換え s = lcase(key) j = len(key) k = len(rep) ct = 0 do until eof(fno) line input #fno, rec i = instr(lcase(rec), s) do until i = 0 rec = left(rec, i - 1) & rep & right(rec, len(rec) - i - j + 1) ct = ct + 1 i = instr(i + k, lcase(rec), s) loop print #fno2, rec loop if err <> 0 then ct = -2 '** ファイルクローズ close fno2 close fno '** エラートラップ開始 on local error goto 0 '** 正常終了セット RepFile = ct End Function ■VB テクニック編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料