-PR-
締切り
済み

VBでファイルの判定

  • 困ってます
  • 質問No.89531
  • 閲覧数435
  • ありがとう数4
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 0% (0/28)

 VBでドラッグドロップやcommondialogなどで読み込まれたファイルの拡張子の判定をしたいのですがどうしたらよいかわかりません。
 たとえば、テキストファイルが読み込まれるとテキストボックスに表示、ほかのファイルが読み込まれると違う処理をするというようなことをしたいのですがわからないので教えていただきたいです。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全5件)

  • 回答No.1
レベル11

ベストアンサー率 49% (139/279)

ファイル名に"."があるかどうかは、Instrを使って調べます。結果が0だったら、拡張子なし。 ですが、ファイル名に"."が2つ以上ある場合、Instrは、最初の"."の位置を拾いますから、要注意です。 と言うわけで、 1.Instrで、"."の位置を調べる 2."."の位置が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でループを抜ける。

この方が簡単ですね。


  • 回答No.2
レベル8

ベストアンサー率 51% (21/41)

Dim sDest As String Dim sBuf() As String sDest = "C:\temp\abc.efg.txt" sBuf = Split(sDest, ".") Debug.Print sBuf(UBound(sBuf)) VB6なら
Dim sDest As String
Dim sBuf() As String

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

VB6なら
  • 回答No.3
レベル8

ベストアンサー率 60% (20/33)

以下の方法でファイル拡張子を取得できます。 ------------------------------------------------ Dim fs As Object Dim strExt As String Dim strPath As String Set fs = CreateObject("Scripting.FileSystemObject")'F ...続きを読む
以下の方法でファイル拡張子を取得できます。
------------------------------------------------
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
-------------------------------------------------
つーことで。
  • 回答No.4
レベル7

ベストアンサー率 77% (14/18)

VB6でしたら、InStrを使って文字列を検索するよりは InStrRevを使う方が簡単かと思います。 InStrRevはInStrの逆バージョンです。
VB6でしたら、InStrを使って文字列を検索するよりは
InStrRevを使う方が簡単かと思います。
InStrRevはInStrの逆バージョンです。
  • 回答No.5
レベル9

ベストアンサー率 21% (13/60)

VB6ならFSOをつかうと拡張子が取得できます。 拡張子は3文字とは決まってないのでFSOを使えば汎用性があっぷします。 FSOにはほかにも機能がたくさんあるのでぜひ。
VB6ならFSOをつかうと拡張子が取得できます。
拡張子は3文字とは決まってないのでFSOを使えば汎用性があっぷします。
FSOにはほかにも機能がたくさんあるのでぜひ。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ