HOME >>ファイル名を取得する

今回はファイル名を取得について書いていきます。

これは他のファイルなどを取得したりする時に便利です。

他のプログラムにはドラッグ&ドロップで値を取得できるのですが

VBAにはこの様な機能はありません。

それに代わる処理を今回は説明したいと思います。


ボタンをクリックするとファイルを開くダイアログボックスを開く↓



選んだファイル名をセルA1に入力するという処理を書きます。

プログラム例は↓

Private Sub CommandButton1_Click()
  
'バリリアン型で変数を宣言する
   Dim FList As Variant
   Dim FName As Variant
  
'ダイアログボックスを開く処理
   FList = Application.GetOpenFilename( _
               FileFilter:="全てのファイル(*.*),*.*", _
               MultiSelect:=True)
                                           
   
'キャンセルが押された時の処理
   If VarType(FList) = vbBoolean Then Exit Sub
 
'選択した値をセルA1に表示する
   For Each FName In FList
       Range("A1").Value = FName
   Next
End Sub

上の処理ではすべてのファイルを表示しています。

拡張子を指定したい場合にはFileFilterで指定します。

JpgとTxtの二つを選択できるようにして表示するには

FileFilter:="画像,*.jpg,テキスト,*.txt"と書きます。

下のように選択できるようになります↓



二つに分ける場合は(カンマ)で区切ります。

注意点は""で一まとめにする事です。

一つにしたい場合はを間にいれます。

FileFilter:="画像とテキスト,*.jpg; *.txt"


これだけだと全てのパスが入力されることになります。

ファイル名だけを表示したいなどの時にファイル名を抜き出す処理を書きます。



フォルダ名までを取得したい場合↓

Left(tfile, InStrRev(tfile, "\"))

tfileには全てのパスが入ってる変数とします。

Leftで左から文字を取得します。

その数をInStrRevで右から最後のまでの数を取得してます。


ファイル名だけを取得したい場合↓

Dir(tfile)

これでファイル名を拡張子付きで取得できます。


拡張子なしで値を取得するには

Left(Dir(tfile), Len(Dir(tfile)) - 4)

左から値を取得する数に、Lenで長さを取得し、拡張子の分を引いています。

これは主に使用する拡張子が3文字の場合の処理です。

それ以外の場合は.の数を取得するでもOKだと思います。



NEXTはまだリンクを張っていません。

次回更新までお待ちを


      

アクセスカウンター

関連書籍

inserted by FC2 system