今回は、Excel-VBAでファイル名から拡張子のみを取得するプログラムを解説していきましょう。
拡張子を取得するための2つの手順
拡張子取得するためには、まず2つやることがあります。
それは下記2つです。
<学校教育だけでは不十分な理由とは>
- ファイル名を取得する処理を記述する
- 拡張子を取得する処理を用意する
拡張子取得における大切なポイントについて
まず第一に、「ファイル名を入力できる」・「ファイル名を取得できる」ようにしておくことが大切なポイントです。
そうしないと、どのファイル名の拡張子がほしいのかわかりませんよね。まず最初の基本事項です。
これができた後で、そこから拡張子を取得しにいきましょう。
ファイル名から拡張子を取得してみよう!
それでは、実際にVBAで、ファイル名の中から拡張子を取得してみましょう。
それに当たって1のメイン処理と2のサブルーチン化された2つの処理から拡張子を取得していきます。
1.メイン(ファイル名を引き渡す)処理の記述
メイン処理では、まずファイル名を2のサブルーチンに引き渡す処理を記述していきましょう。
下記を参考にして、ファイル名を「Kakuthoushi」のサブルーチンに引き渡す処理を記述していきましょう。
1 2 3 4 5 6 7 8 | Public Sub Main Dim strKakuthyoushi as string strKakuthyoushi=KakuthoushiGet("ファイル名") ’拡張子のサブルーチンに移動・・・① Msgbox strKakuthyoushi ’拡張子を表示 End Sub |
上記が、基軸となる処理です。こちらでファイル名を取得して、最終的に拡張子をメッセージボックスに表示するという中心となる記述になります。
しかし、ここでは、拡張子は取得できません。
その拡張子を取得する記述は、「KakuthoushiGet("ファイル名")」のサブルーチンの中に記載されているからです。
この中で取得した拡張子を「strKakuthoushi」に返すイメージです。
そして、メッセージボックスで最終的に表示しています。
①の部分で拡張子を取得していきますので、それでは、この①の中身を下でみていきましょう!
2.拡張子を取得するサブルーチンの記述処理
続いて、①の記述の中身(サブルーチン)を解説していきましょう。
1 2 3 4 5 6 7 8 9 10 | Public function KakutyhoushiGet(strFileName as string) as String Dim vDat as variant Dim intUbound as integer KakutyhoushiGet="" vDat=Split(strFileName,".") intUBound=UBound(vDat) KakutyhoushiGet=vDat(intUbound) End function |
このサブルーチン化した記述は、どこのプログラミングでも汎用性がきくように作られていますので、strFileNameの部分にファイル名が入力されれば、必ずその拡張子が買えるようになっています。
ちなみに、この処理を簡単に解説すると、
Split関数というものを使って、ファイル名の「.」の部分で名前を分断しています。
そしてその「.」の右側部分を取得するように記述したものになります。
拡張子を除いたファイル名を取得しよう!
最後に、もう一つおまけです。
拡張子を取得する処理を今回記述しましたが、今度は拡張子前のファイル名までを取得する処理についても合わせて簡単なロジックを解説しておきましょう。
そのロジックはこちら。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub FileName_OnlyGet() Dim strBookName As String Dim i As Long strBookName = ActiveWorkbook.Name i = InStrRev(strBookName, “.”) If i > 0 Then strBookName = Left(strBookName, i – 1) MsgBox "ファイル名: " & strBookName Else MsgBox "ファイル名が取得できません。",vbCritical End if End Sub |
これで、拡張子を除いたファイル名を取得することができますので、ぜひ挑戦していきましょう!
まとめ
このように、Excel-VBAを活用して、ファイル名の拡張子を取得することが可能です。
またプログラミングをする上で大切なことは、同じコーディングを何度もしないように、上記のようにプログラムを細分化して、サブルーチン化することで、同じプログラムを何度も書かずに呼び出すように作成することが大切です。
今回の拡張子を取得するプログラムは、何度も呼び出せるように作成してありますので、ぜひその他のプログラムも同じように部品化しながら、作成してみて下さい。