OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VBでテキスト形式のファイル名称から拡張子を取りたい

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

お礼率 69% (36/52)

みなさんこんにちは^^

ちょっと困っています。
VB6でコーディングを行っていますが
取得したファイル名称を一旦ワークに落として
それを出力ファイル名に利用したいのですが、
拡張子が邪魔をして上手く行きません。
何か拡張子を取るような方法があれば教えて頂きたいのですが!

例)入力ファイル名称 → 変換 → 出力ファイル名称
  AAA.TXT AAA_001.TXT
BBB_001.TXT BBB_001.TXT
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル8

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

FileSystemObjectを使ったらどうですか?

拡張子&ファイル名を取得する方法を書いときます
参照設定で「Microsoft Scripting Runtime」を参照します。
'拡張子のみ取得
Function hoge1(strPath As String) As String
Dim fso As New FileSystemObject
hoge1=fso.GetExtensionName(strPath)
End Sub

'ファイル名のみ取得
Function hoge2(strPath As String) As String
Dim fso As New FileSystemObject
hoge2=fso.GetFileName(strPath)
End Sub

じゃ、そゆことで。
お礼コメント
rukaandkaito

お礼率 69% (36/52)

ありがとうございます

そうか、FileSystemObjectか・・・
存在を忘れていました(笑)
参考になりました。早速使わせていただきますw
投稿日時 - 2001-11-21 09:24:42
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1

拡張子が.txtと決まっているのでしたら、 Left$(ファイル名,Len(ファイル名)-4)ではダメですか? ...続きを読む
拡張子が.txtと決まっているのでしたら、
Left$(ファイル名,Len(ファイル名)-4)ではダメですか?
補足コメント
rukaandkaito

お礼率 69% (36/52)

たしかにCHOROLYNさんのおっしゃる方法で出来るのですが
今後は「.txt」以外のファイルでも対応していきたいので
拡張子を取るような関数でもあればと思って質問しました。
拡張子って3文字以外にもありますよね!
たとえば「.html」だとか「.il」だとか・・・
後ろから一文字ずつ検索して、ピリオドが出たら切るって方法も
あるのですが・・・(めんどい^^)
投稿日時 - 2001-11-20 14:08:28


  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

拡張子を認識するためのAPI関数があります。 ファイルのフルパスでもOK '拡張子のピリオドを<<vbNullChar>>に変換するAPI関数 Private Declare Sub PathRemoveExtension Lib "shlwapi.dll" Alias "PathRemoveExtensionA" ( ...続きを読む
拡張子を認識するためのAPI関数があります。

ファイルのフルパスでもOK

'拡張子のピリオドを<<vbNullChar>>に変換するAPI関数
Private Declare Sub PathRemoveExtension Lib "shlwapi.dll" Alias "PathRemoveExtensionA" (ByVal pszPath As String)

Sub Main()
  Const FILE1 As String = "c:\test\index.html"
  Const FILE2 As String = "c:\test\index.html.doc.txt.wav"
  Const FILE3 As String = "index"
  Const FILE4 As String = "index.html.doc.txt.wav.ウィルス"

  Dim wkStr1 As String
  Dim wkStr2 As String

  Call GetGetGet(FILE1, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE1 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  
  Call GetGetGet(FILE2, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE2 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  
  Call GetGetGet(FILE3, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE3 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  
  Call GetGetGet(FILE4, wkStr1, wkStr2)
  MsgBox _
      "ファイル名:[" & FILE4 & "]" & vbNewLine & _
      "ファイル :[" & wkStr1 & "]" & vbNewLine & _
      "拡張子  :[" & wkStr2 & "]"
  Exit Sub
End Sub

Function GetGetGet(ByVal inFileName As String, ByRef outFileName As String, ByRef outKakutyousi As String)
  Dim valWork As Variant
  
  '戻りパラメータ初期化
  outFileName = ""
  outKakutyousi = ""
  
  '拡張子を<<vbNullChar>>に変換
  Call PathRemoveExtension(inFileName)
  
  'vbNullCharで切り分ける
  valWork = Split(inFileName, vbNullChar)
  
  '配列の先頭がファイル名
  outFileName = valWork(0)
  
  '拡張子が存在してない時は、以下を通らない
  If UBound(valWork) > 0 Then
    outKakutyousi = valWork(1)
  End If
End Function
お礼コメント
rukaandkaito

お礼率 69% (36/52)

御有難う御座りまスル!!

ムムム・・・・・・・・
何か非常に難しいですな
拙者の存ぜぬ関数なる物が
多分に表記されておる為か
理解に時が必要じゃw

拙者の現在の習熟能力では
把握出来ぬ故、暫しの時を
くだされ、勉学に勤しんで
みるとしよう・・・(笑)

VBって奥が深いですね!
まだまだ勉強が必要です。
皆さんホントにどうもです

o(o|o)/    (V)o\o(V)
投稿日時 - 2001-11-21 09:35:49
  • 回答No.3
レベル9

ベストアンサー率 63% (28/44)

お疲れ様です。 ファイル名の後ろから"."を探せばいいのではないでしょうか。 (例   Dim ファイル名 As String   Dim 名前 As String   Dim 拡張子 As String   Dim 位置 As Long   ファイル名 = "AIUEO.TXT" ...続きを読む
お疲れ様です。

ファイル名の後ろから"."を探せばいいのではないでしょうか。

(例

  Dim ファイル名 As String
  Dim 名前 As String
  Dim 拡張子 As String
  Dim 位置 As Long

  ファイル名 = "AIUEO.TXT"

  位置 = InStrRev(ファイル名, ".") '// 後ろから文字を検索

  名前 = Left$(ファイル名, 位置 - 1) '// 名前が入る
  拡張子 = Right$(ファイル名, Len(ファイル名) - 位置) '// 拡張子が入る

(結果
  名前 = "AIUEO"
  拡張子 = "TXT"

間違っていたらごめんなさい。
お礼コメント
rukaandkaito

お礼率 69% (36/52)

おはようございます
お礼が遅くなって申し訳ありません!

InStrRevっていう関数があるんですねw
知らなかったな~^^
私はLen関数で文字列長を取得してから、Loopで回してました(笑)
勉強になりました!
投稿日時 - 2001-11-21 09:27:48
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ