Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4304 / 13644 ツリー ←次へ | 前へ→

【57412】文字列の検索で たかたか 08/8/20(水) 8:56 質問[未読]
【57413】Re:文字列の検索で kanabun 08/8/20(水) 9:03 発言[未読]
【57414】Re:文字列の検索で kanabun 08/8/20(水) 9:11 発言[未読]
【57417】Re:文字列の検索で たかたか 08/8/20(水) 11:01 お礼[未読]

【57412】文字列の検索で
質問  たかたか  - 08/8/20(水) 8:56 -

引用なし
パスワード
   こんにちわ
初心者のたかたかです。以前はお世話になりました。
今回もよろしくおねがいします。

前回教えてもらった方法で外部ファイルを読み込んでいるんですが
テキストファイルの一行のなかに、例えば"F"があればとりこむ。なければ次の行を検索する。ということをやりたいのですが、うまくいかずに困っています。
どなたか教えてください。

ちなみに

Sub t()
Const sPath As String = "ファイルのフルパス"
Dim fso As Object
Dim srm As Object
Dim firstLine As String, endLine As String

  Set fso = CreateObject("Scripting.FileSystemObject")
  Set srm = fso.OpenTextFile(sPath)
  firstLine = srm.ReadLine
  Debug.Print firstLine
  
  Do Until srm.AtEndOfStream
    endLine = srm.ReadLine
  Loop
  Debug.Print endLine
  
  srm.Close
  Set srm = Nothing
  Set fso = Nothing
End Sub

教えていただいたやり方で、実際には endLine をLEFTやMID等を使って解析して
必要な要素だけセルに記入してます。

N7S2500M03
N8M08
N9Z5.
N10G1Z0.03F800
G05P10000
N11X-38.F400
N12X38.
N13Y25.7143
N14X-38.

上のようなテキストで"F"の後の数値だけ取り出したり、"Z"の後だけとりだしたりしたいのです。"F"はRIGHTを使ってなんとかできたのですが"Z"がうまくできません。
"Z"の位置は常に同じ位置にあるわけじゃないのです。なので、その行にあるかないかの判定ができないかと思ってます。
どなたかよろしくお願いします。

【57413】Re:文字列の検索で
発言  kanabun  - 08/8/20(水) 9:03 -

引用なし
パスワード
   ▼たかたか さん:

>上のようなテキストで"F"の後の数値だけ取り出したり、"Z"の後だけとりだしたりしたいのです。

InStr関数を使うと文字列中の検索文字の位置が分かります。

>数値だけ
見つかった文字のすぐ後の数値を得るには Val関数を使うといいです。

【57414】Re:文字列の検索で
発言  kanabun  - 08/8/20(水) 9:11 -

引用なし
パスワード
   >▼たかたか さん:
>見つかった文字のすぐ後の数値を得るには Val関数を使うといいです。

こんな感じです

 Const ss = "N10G1Z0.03F800"
 Dim j As Long
 
 j = InStr(ss, "F")
 If j > 0 Then Debug.Print ss, Val(Mid$(ss, j + 1))
 
 j = InStr(ss, "Z")
 If j > 0 Then Debug.Print ss, Val(Mid$(ss, j + 1))

【57417】Re:文字列の検索で
お礼  たかたか  - 08/8/20(水) 11:01 -

引用なし
パスワード
   kanabun さん
早速の回答ありがとうございます。

おかげさまでうまくできそうです。
またなにかあったらおねがいします。

4304 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free