質問: Mid(Alllog4, InStr(1, Alllog4, "Release") + 8, 7) '「Release」表記のあとのバージョンを求める。 ``` ※皆様どうもありがとうございました。 皆様のご指摘どおり、「vbCrLf」の指定で行を区切ることで実現することが出来ました。 ベストアンサーは非常に迷いましたが、現コードの一文をそのまま修正して実現することが出来ましたので h.horikoshi様とさせて頂きました。 他の回答者の皆様には申し訳ございませんが、一つ一つのご回答がとても参考になりました。 本来、お礼をこちらに記載することは不適切かもしれませんが 記載する場所が分かりませんでしたのでこちらで述べさせて頂きます。 貴重なお時間を割いて頂き、ありがとうございました。
回答: テキストファイルを取得する際に行単位で読むようにすれば話は早いです。 ``` Const CS_SEARCH As String = "Release" Dim sLine As String Dim f Set f = fso.OpenTextFile(logPath & buf4, 1) 'ファイルの終わりまでループ処理 Do Until f.AtEndOfLine '1行ずつ読み込む sLine = f.ReadLine If InStr(sLine, CS_SEARCH) > 0 Then Net_ver = Mid(sLine, InStr(1, sLine, CS_SEARCH) + Len(CS_SEARCH)) '「Release」表記のあとのバージョンを求める。 Exit Do End If Loop ``` もし後続処理との兼ね合いなどでどうしても全文で取得しておく必要があるのであれば、Split関数を使い改行で区切るという方法もあります。 ``` 'Alllog4は本テキストファイルの全文を格納しています。 With fso.OpenTextFile(logPath & buf4, 1) ' Alllog4 = .ReadAll .Close End With Const CS_SEARCH As String = "Release" Dim sLine As String Dim ary, i '改行で分割した文字列配列を作成 ary = Split(Alllog4, vbCrLf) '文字列配列の数だけループ(行ループ) For i = 0 To UBound(ary) - 1 '配列から1行分取り出す sLine = ary(i) '"Releace"の文字列が見つかれば If InStr(sLine, CS_SEARCH) > 0 Then Net_ver = Mid(sLine, InStr(1, sLine, CS_SEARCH) + Len(CS_SEARCH)) '「Release」表記のあとのバージョンを求める。 Exit For End If Next ```