| 
    
     |  | umebaind さん、ちゃっぴさん、おはようございます。 
 >以下のようなプログラムを作りSEEK関数を利用して
 >ファイルから検索している文字が見つかれば
 >新たに検索する文字を入れ替え
 >見つかった行のその次の行から検索し処理を
 >短時間で終了させるような事をやりたいのですが
 ><<<このPGの本体とも言うべきプログラムは約25万件の処理を
 >行う為>>>
 処理時間を短くする方法は、ちゃっぴさんの投稿にもありましたが、
 一回の読込で複数行読み込んでしまう方法があるとは思います。
 (アルゴリズムに工夫が必要ですが)。
 でも、その前にumebaind さんが投稿されたコードで
 1行づつ読み込んだ手法で正常に動作するコードを作ってみてはいかがですか?
 
 見せていただいた限りでは、
 SEEK関数及び、SEEKステートメントを使用する意味が私には
 わかりませんでした。
 入力データもご提示されているので
 再現しやすいご質問なのですが、
 ご希望の結果も記述されるともっとよかったと思いますよ!!
 
 >Sub FSEEK()
 >'MsgBox "引数=" & Mails
 >  Dim s As String
 >  Dim MyArray
 >  Dim d
 >  s = CurDir          'カレントフォルダを取得する
 >  MyArray = Split(s, "\", -1) 'カレントフォルダを"¥"で分割する
 >  'カレントフォルダを再構成する
 >  s = MyArray(0) & "\" & MyArray(1) & "\" & MyArray(2) & "\" & "デスクトップ\ファイルシーク"
 >
 >  ChDir s           'カレントフォルダを変更する
 >  Dim strFILENAME2 As String
 >  strFILENAME2 = s & "\FILESEEK2.txt"
 >
 >  Dim strREC 'オーバーフローの為
 >
 >  Dim setlist As Variant     'SPLITの戻り値はバリアント型の為
 >  Dim n, comt, counter
 >
 >  'strFILENAME2 = s & "\FILESEEK2.txt"
 >  Dim intFileno As Integer
 >  Dim i
 >  Dim jjj As Variant
 >  Dim uuu As Long
 >  Dim dse, A1, A2 As String
 >  Open strFILENAME2 For Input As #1
 >  Dim strtest
 >  Dim ddd As String
 >  Dim FPos As Long
 >
 >  counter = 0
 >  i = 1
 >  Do Until EOF(1)
 >
 >    Line Input #1, strREC
 debug.print strrec
 '   として、Seekステートメントが実行された
 '   直後の「strREC」の中身を確認して下さい
 '   たぶん、umebaind さんが意図している内容とは違うと思います
 >
 >    jjj = Split(strREC, ",")
 >    dse = jjj(1)
 >
 >A1 = "6columsyori"
 >A2 = "12columsyori"
 '↑これは、ここにあると
 '常に"6columsyori"を調査してしまいますよね
 'これは、たぶん、わかってらしてやっているとは思いますが・・・。
 
 >
 '     カンマ区切りの2列目のデータのみ検索する仕様でよいのですか?
 >    If StrComp(dse, A1) = 0 Then
 >
 >      MsgBox i & "行目" & "で見つかりました!" & A1 & "行目の処理:" & Loc(1)
 >
 >      FPos = Seek(1)
 >      MsgBox FPos & "⇔本当の現在位置"
 >
 >      A1 = ""
 >      A1 = A2 '処理の入れ替え
 >      Seek #1, FPos + 1 '見つかった位置から検索する
 >
 >    End If
 >    i = i + 1
 >
 >  Loop
 >
 >'
 >  Close #intFileno
 >
 >
 >End Sub
 
 仕様が
 
 >ファイルから検索している文字が見つかれば
 >新たに検索する文字を入れ替え
 >見つかった行のその次の行から検索し処理
 
 であれば、SEEKステートメントの処理は不要だと思いますが・・・。
 一行読み込んだ時点でカレントポインタは、次の行の先頭に
 なっていますから・・・。
 
 
 |  |