日常~おまけ雑記~

日常にほんの少し活力を~毎日の出来事やオーディオなど趣味のことを紹介するブログです



accessフォームにファイルをドラッグしてフルパスを取得する|プログレスバー

フォーム上にプログレスバーを置き、そこにファイルをドラッグするとフルパスを取得することが出来ます。これは、エクセルやCSVなどのテキストファイルなら、データのインポートに活用できます。
また、テーブルにファイルのフルパスを格納しておくと、いつでもそのファイルを開くことが出来ます。フルパスは手軽に取得できるのでご参考にどうぞ。
※ここで使用するACCESS画像のバージョンは2013です

 

■フォームにプログレスバーとテキストボックスを3個用意する

今回はフルパスのついでにファイル名とファイルが格納されているフォルダも取得します。

準備する内容
フォーム1
テキストボックス ・・・ テキスト1
テキストボックス ・・・ テキスト2
テキストボックス ・・・ テキスト3
プログレスバー ・・・ ProgressBar0

 

プログレスバーの作成方法は下記より
デザイン~ActiveXコントロールMicrosoft ProgressBar Control6.0(PS4)で作成し、
また、プロパティ~その他~OLEDropModeを1に変更します。

 

■フォームのVBAを入力する

まずはフォームのVBAを入力するための準備をします。
フォームのデザインビューで、データベースツール~Visual Basicをクリック。
もしフォームを新規作成していて何もない場合は、フォームのデザインビューで、左上の■を右クリックして、イベントのビルド~コードビルダーを開きます。
(ここではいろいろな方法ありますが、どんな方法でも良いです)

Private Sub Form_Load()
End Sub
このとき↑という記述ができてしまいますがこちらは無視してください。

 

VBAを下記のように入力して完成です

Private Sub ProgressBar0_OLEDragDrop(Data As Object, _
    Effect As Long, Button As Integer, _
    Shift As Integer, X As Single, Y As Single)

'ファイルのフルパスを取得
Me!テキスト1.Value = Data.Files(1)

'フィル名を取得
dd = テキスト1
ddd = Dir(dd)
Me!テキスト2.Value = ddd

'ディレクトリを取得
ddd = Left(dd, InStrRev(dd, "\") - 1)
Me!テキスト3.Value = ddd

End Sub

 

■1行目について

Private Sub ProgressBar0_OLEDragDrop(Data As Object, _
    Effect As Long, Button As Integer, _
    Shift As Integer, X As Single, Y As Single)

プログレスバーにドラッグするときの記述ですが、長いので改行をしています。
ドラッグドロップについてはお約束の記述ですかね。

 

■ファイルのフルパスを取得

Me!テキスト1.Value = Data.Files(1)

行最後の(1)の数値は1つのファイルを意味しております。
複数のファイルを選択してドラッグした場合は、最初のファイルのみ取得します。
複数のファイルを取得したい場合は、数値を変えるか変数にします。
またその場合は、テキストボックスではなくリストボックスにして複数行表示する工夫が必要になるかと思います。

 

■ファイル名を取得

dd = テキスト1
ddd = Dir(dd)
Me!テキスト2.Value = ddd

Dir関数でフルパスからファイル名だけを取得して、テキストボックスに入力しています。

 

ディレクトリを取得

ddd = Left(dd, InStrRev(dd, "\") - 1)
Me!テキスト3.Value = ddd

ここではLeft関数と、InStrRev関数を使用しています。

Left(文字列,文字数)
文字列(フルパス)を左から文字数までの文字列を取得する

InStrRev(文字列,検索値)
文字列を後ろから検索値までの位置(数値)を返す
つまりここでは文字列(フルパス)の最後の"\"から1を引いた文字の位置を取得します。

 

■結果

Cドライブに新しいフォルダーを作り、そこにあるtest.txtというファイルをドラッグすると下記のデータを取得します。
フルパス・・・C:\新しいフォルダー\test.txt
ファイル名・・・test.txt
ディレクトリ・・・C:\新しいフォルダー

 

■最後に

冒頭でも書きましたが、フルパスからCSVやエクセルのデータをインポートするのに使っています。
手軽に使えるので、エラー処理もそこそこに出来るようなゆるい処理で重宝しますね。
また、動画や画像をファイルサーバーに蓄積したファイルパスをテーブルに格納しておいて、ボタンで呼び出して表示するのもたまに使用します。
何かでご活用出来れば幸いです。

 

 

 

www.omake-zakki.com

www.omake-zakki.com

www.omake-zakki.com