Excel VBA質問箱 IV

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

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


8523 / 13646 ツリー ←次へ | 前へ→

【32787】文字数の決まっていない文字列の選択について みぽりん 05/12/22(木) 10:58 質問[未読]
【32788】Re:文字数の決まっていない文字列の選択に... やっちん 05/12/22(木) 11:17 回答[未読]
【32789】Re:文字数の決まっていない文字列の選択に... ichinose 05/12/22(木) 11:24 発言[未読]
【32790】Re:文字数の決まっていない文字列の選択に... こたつねこ 05/12/22(木) 11:24 発言[未読]
【32798】Re:文字数の決まっていない文字列の選択に... みぽりん 05/12/22(木) 13:31 お礼[未読]
【32804】Re:文字数の決まっていない文字列の選択... わさび 05/12/22(木) 13:58 発言[未読]
【32806】Re:文字数の決まっていない文字列の選択... みぽりん 05/12/22(木) 14:54 お礼[未読]

【32787】文字数の決まっていない文字列の選択につ...
質問  みぽりん  - 05/12/22(木) 10:58 -

引用なし
パスワード
   こちらで教えていただきながら、マクロの記録で作ったマクロを手直した
ことがあるだけで、超初心者レベルです。
同じような質問を検索してみたのですが、それすら探し出せない情けない者です。宜しくお願いいたします。

現在動いているマクロに
\aaa\bbb\ccc\ファイル名.mpt からファイル名だけを抜き出すというところが
あります。
ファイル名の桁数が8桁と決まっていたので、
Mid関数で抜き出していました。

今回ファイル名が何桁になるかわからないという仕様に変わりました。
私のレベルの頭では、Right関数でファイル名の前までを省いて、
Left関数で.mptの4桁を省けばいいのかなーとしか考えらないのですが、
たぶん普通の人はそんな方法ではないだろうと容易に想像がつきます。
こういう場合、どのようにしたらいいんですか?
応用がまったくききません。こんな簡単な質問で大変申し訳
ありませんが、宜しくお願いいたします。

【32788】Re:文字数の決まっていない文字列の選択...
回答  やっちん  - 05/12/22(木) 11:17 -

引用なし
パスワード
   ▼みぽりん さん:
こんにちは。
「InStrRev」を使ってはどうでしょうか?

Sub TEST()
  Dim lngLoc1 As Long
  Dim lngLoc2 As Long
  Const a = "\aaa\bbb\ccc\ファイル名.mpt"
  
  lngLoc1 = InStrRev(a, "\") + 1
  lngLoc2 = InStrRev(a, ".")
  MsgBox Mid(a, lngLoc1, lngLoc2 - lngLoc1)

End Sub

【32789】Re:文字数の決まっていない文字列の選択...
発言  ichinose  - 05/12/22(木) 11:24 -

引用なし
パスワード
   こんにちは。

これは、色々方法ありますよ!!
Sub test()
  MsgBox CreateObject("Scripting.FileSystemObject") _
         .GetBaseName("d:\aaa\bbb\ccc\ファイル名.mpt")
End Sub

【32790】Re:文字数の決まっていない文字列の選択...
発言  こたつねこ  - 05/12/22(木) 11:24 -

引用なし
パスワード
   みぽりんさん、やっちんさんこんにちは

やっちんさんが回答済ですが参考までにこんな方法も

Sub Test()
  Dim FSO As Object
  Dim strFileName As String
  
  Set FSO = CreateObject("Scripting.FileSystemObject")
  
  strFileName = FSO.GetFileName("\aaa\bbb\ccc\ファイル名.mpt")
  MsgBox Left(strFileName, InStr(strFileName, ".") - 1)
  
  Set FSO = Nothing
End Sub

【32798】Re:文字数の決まっていない文字列の選択...
お礼  みぽりん  - 05/12/22(木) 13:31 -

引用なし
パスワード
   やっちんさん、ichinoseさん、こたつねこさん、

InStrRev や CreateObject など、
まったく知らなかった方法をご親切に教えてくださり、
どうもありがとうございました。
便利で、勉強しておくと役に立ちそうです。
ご丁寧にわかりやすく教えてくださって
皆さんに感謝です!

【32804】Re:文字数の決まっていない文字列の選択...
発言  わさび  - 05/12/22(木) 13:58 -

引用なし
パスワード
   こんにちは。
もうすでに解決済みなんですが…

昨日Keinさんに教えていただいたコードの応用で、

--------------------------
Sub TEST()
   
  Dim nowFILE As String
  nowFILE = Dir("\aaa\bbb\ccc\ファイル名.mpt")
  
  MsgBox Left(nowFILE, Len(nowFILE) - 4)

End Sub
--------------------------

てなカンジでも、できるみたいです。

【32806】Re:文字数の決まっていない文字列の選択...
お礼  みぽりん  - 05/12/22(木) 14:54 -

引用なし
パスワード
   ▼わさび さん:

簡単にできました!
Dir関数という便利なものがあるんですね。
どうもありがとうございました。

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