こんにちわ
初心者ですが、Excelでマクロを書いています。
テキストファイルから行を取得し右から、スペースのある部分まで抜き出して、
抜き出した文字の前後のスペースを削除し、文字を出力させたいです。
VBA
1Sub Run() 2 Dim OpenFileName As String 3 'ファイルを開くダイアログ 4 ChDir ThisWorkbook.Path & "\" 5 OpenFileName = Application.GetOpenFilename("テキストファイル,*.txt") 6 7 If OpenFileName <> "False" Then 8 Open OpenFileName For Input As #1 9 'Else 10 End If 11 12 Dim line1 As String 13 Dim line2 As String 14 15 '2行読み込み 16 Line Input #1, line1 17 Line Input #1, line2 18 19 '2行目 20 Dim staff As String 21 Dim namae As String 22 line2 = RTrim(line2) 23 staff = Right(line2, InStrRev(line2, " ") - 1) 24 namae = Trim(staff) 25 26 Debug.Print , namae; 27 28 Close 29 End Sub 30
2行目のもともとの文字列は
東京 000002 2018/08/01 山田 太郎
といった具合です。
わかりづらいので半角スペースをで表現すると
東京000002**2018/08/01*****山田*太郎*
のようなイメージです。(*は全角スペース)
要はこの「山田 太郎」を抜き出したいです。
ループさせる予定なので名前は山田太郎固定ではないです。
line3 = RTrim(line3)←右側のスペースを削除して staff = Right(line3, InStrRev(line3, " ") - 1)←右から最初のスペースがあるところまでを取得
namae = Trim(staff)←前後の余計な文字を削除
と考えていますが、これを実行すると必要以上の文字が取得されてしまいます。
考え方がおかしいのでしょうか?
よろしくお願いします。
追記
staff = MID(line3, InStrRev(line3, " ") + 1)
でうまくできました。ありがとうございました。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/16 02:17