VBでドラッグドロップやcommondialogなどで読み込まれたファイルの拡張子の判定をしたいのですがどうしたらよいかわかりません。
 たとえば、テキストファイルが読み込まれるとテキストボックスに表示、ほかのファイルが読み込まれると違う処理をするというようなことをしたいのですがわからないので教えていただきたいです。

A 回答 (5件)

VB6ならFSOをつかうと拡張子が取得できます。


拡張子は3文字とは決まってないのでFSOを使えば汎用性があっぷします。
FSOにはほかにも機能がたくさんあるのでぜひ。
    • good
    • 0

VB6でしたら、InStrを使って文字列を検索するよりは


InStrRevを使う方が簡単かと思います。
InStrRevはInStrの逆バージョンです。
    • good
    • 0

以下の方法でファイル拡張子を取得できます。


------------------------------------------------
Dim fs As Object
Dim strExt As String
Dim strPath As String
Set fs = CreateObject("Scripting.FileSystemObject")'FileSystemObject作成
strExt=fs.extGetExtensionName(strPath)'ファイル拡張子取得
Debug.Print strPath
-------------------------------------------------
つーことで。
    • good
    • 0

Dim sDest As String


Dim sBuf() As String

sDest = "C:\temp\abc.efg.txt"
sBuf = Split(sDest, ".")
Debug.Print sBuf(UBound(sBuf))

VB6なら
    • good
    • 0

ファイル名に"."があるかどうかは、Instrを使って調べます。

結果が0だったら、拡張子なし。

ですが、ファイル名に"."が2つ以上ある場合、Instrは、最初の"."の位置を拾いますから、要注意です。

と言うわけで、

1.Instrで、"."の位置を調べる
2."."の位置が0なら拡張子なし。0より大きければ3以降の処理を行う
3."."の位置が0になるまで以下を繰り返す
・"."の位置+1を拡張子とする。(Mid関数を使用)
・調べる対象をこの拡張子とした文字列にする

こんな感じです。

もっと直感的な方法で、文字を後から調べていく方法もあります。

文字の桁数をLen関数で調べて
For i = Len(ファイル名) To 1 Step -1
でまわして、Mid(ファイル名,i,1)が"."だったら、この位置+1が拡張子(Mid(ファイル名,i+1))。あとはExit Forでループを抜ける。

この方が簡単ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報