皆さんはたくさんの電子ファイルをどのように整理し、管理されていますか?
写真ファイルやアーカイブした資料などは、保存するだけ保存してHDDやSSDの肥やしになっていませんか?
そんな貴方へファイルを整理するための方法として、Accessを活用してファイルのデータベース化をする方法を紹介します。ハイパーリンクにより対象のファイルを開くことができるようにすると、データの中身を見たいときに直ぐに閲覧することができ、運用面でも、保守・管理の面でも楽になります。
そこで、まずはその初めの一歩としてAccessテーブルにハイパーリンクとファイル作成年月日を保存する方法を紹介します。
なお、ファイルパスの取得方法については、以下の記事で紹介していますので、そちらをご確認ください。本記事では、取得したファイルパスをAccessテーブルに保存していく方法を紹介します。
サンプルデータ
今回は、サンプルデータとしてCドライブに「TEST」フォルダを作成し、この中に「Picture1.jpg」、「Picture2.jpg」及び「TEST2022.txt」ファイルを保存しているとします。
そして、Accessからこれらファイルのパスを取得し、Accessテーブルに登録する方法を示していきます。そこで、Accessテーブルとしては「T_ファイル」テーブルを作成し、「ID」、「ファイルパス」及び「作成年月日」フィールドを追加し、これらフィールドのデータ型をそれぞれ「オートナンバー型」、「ハイパーリンク型」及び「日付/時刻型」とします。
以上を踏まえて、次からはファイルパス、作成年月日を取得していく方法を説明します。
VBAによるハイパーリンク・ファイル作成年月日取得処理の実装
VBAによる実装として標準モジュールを作成し、FilePathプロシージャとして以下のコードを追加してください。
Private Sub FilePath() 'FileSystemObjectを使うための変数宣言 Dim fso As Scripting.FileSystemObject Dim Folder As Object Dim File As Object 'ADOを用いるための変数宣言 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset 'T_ファイルテーブルを開く処理 Set cn = CurrentProject.Connection rs.Open "T_ファイル", cn, adOpenKeyset, adLockOptimistic 'FileSystemObjectのオブジェクトを作成する。 Set fso = New Scripting.FileSystemObject 'C:\TESTをFolderオブジェクトとして代入する。 Set Folder = fso.GetFolder("C:\TEST") 'C:\TEST内の全てのファイルに対して処理をする。 For Each File In Folder.Files 'ファイルパス、作成年月日を取得し、T_ファイルテーブルに '値を格納する。 rs.AddNew rs!ファイルパス = "#" & File.Path & "#" rs!作成年月日 = FileDateTime(File.Path) rs.Update Next 'オブジェクト参照の破棄 Set Folder = Nothing Set fso = Nothing 'データベースを閉じる処理 rs.Close cn.Close: Set cn = Nothing End Sub
まずは、ファイルパスを取得するためにはFileSystemObjectを用いることになりますので、これを用いるための変数宣言を行います。
次に、ADOを用いて「T_ファイル」テーブルへ値を追加しますので、このための変数宣言を行います。続いて、ADOによりカレントデータベースに接続をし、「T_ファイル」テーブルを開きます。
なお、ADOの使用方法については、以下の記事で紹介していますので、ご参考にしてください。
この状態で、次にFileSystemObjectオブジェクトを作成し「C:\TEST」フォルダを「Folder」変数に代入します。
「C:\TEST」フォルダ内にある全てのファイルパス、作成年月日を取得するため、For Next文でループ処理をすることとします。各値は「T_ファイル」テーブルに追加していきますので、ADOにより新たにレコードセットを追加し、続いて各フィールドに値を登録していきますが、「File.Path」によりファイルパスを、また、FileDateTime関数によりファイルの作成年月日を取得することができます。
ハイパーリンクを設定する上では、ファイルパスの前後を「#」で括る必要があります。この設定をしないと、取得したファイルパスをクリックしてもファイルが開きませんので注意してください。
また、FileDateTime関数は以下の基本構文で示されますので、併せて紹介しておきます。
FileDateTime(pathname)
pathname: 作成年月日を取得したいファイルのパス
レコードセットへの値の追加が終わり次第、「rs.Update」で更新処理をします。
以上の処理を繰り返し行い、全てのファイルの情報を取得した後、FileSystemObjectのオブジェクト破棄、ADOによるデータベース接続を切ります。
これで、実装が完了しましたので、実際の動作を見ていきましょう。
ハイパーリンク・ファイル作成年月日取得の動作確認
実装した「FilePath」プロシージャにカーソルを合わせ、VBA画面上の「▶」アイコンをクリックします。これで処理が実行されますので(画面上、何も表示されませんが、一度アイコンをクリックすると処理が実行されます。)、「T_ファイル」テーブルを開いてください。すると、図3のように元々データが入っていなかったテーブルに情報が追加されていることが分かります。
テーブル上のハイパーリンクをクリックすると、対象となるファイルが開くことも確認できたかと思います。また、作成年月日フィールドには、ファイルを作成した日時情報が追加されていることも確認できます。
このようにして、ファイルパス、ファイル作成年月日を取得することができました。
まとめ
今回は、ファイル整理に向けて特定のフォルダ中にある各ファイルのパスを取得しハイパーリンク設定する方法、ファイル作成年月日を取得する方法を紹介しました。
ハイパーリンクを設定できるとテーブルから対象となるファイルを開くことができるようになり、運用面、保守・管理の観点から便利です。是非、今回紹介した方法を活用し、業務効率の改善に役立てていただければと思います。
また、今回紹介した方法は専門書でも紹介されていますので、ご参考になさってください。
スポンサーリンク
コメント