目次
ファイル台帳を作成する方法
膨大な量のファイルを整理するのにはとても時間がかかります。
大量の紙媒体を机に置かれて「これスキャンしといて!」などと頼まれた経験はおありでしょうか。
新人の頃などはそうした雑用に近い業務を任されることも多いでしょう。
そんなときにスキャナーを動かす手間はもちろん、ファイルに名前を付けて保存して、さらにファイル台帳にもそれを記入するとなるとかなりの時間を要します。
その中でどのように効率的に業務を進められるかがポイントです。
今回のパターンであれば、ファイル台帳記入においてはVBAで高速化が可能です。
本記事ではVBAでの高速化をご紹介すると共に、サンプルのExcelファイルもダウンロードが可能となっております。
また、ソースコードもコピー&ペーストが可能です。
※エラー等が発生した場合の責任は負いかねます。
ファイル台帳のダウンロード
こちらからExcelファイルをダウンロード可能です。
ファイル台帳の使い方
ファイル台帳を開きます。
開く際にマクロを有効にします。
親フォルダのパスを入力します。
このとき、もし間違えて親フォルダのパスを入力し忘れると、
このようなエラーが発生します。「終了」を押して、正しくフォルダのパスを入力しましょう。
正しく親フォルダのパスを入力された状態で「ファイル台帳の更新」ボタンを押すと台帳が表示されます。
最終更新日、罫線も自動で入力されます。
VBAのソースコードと解説
こちらがファイル台帳のソースコードです。
Public ParentFolder As String
Public fpl As Object
Public buf As String
Public l As Folder
Public e As File
Public fso As FileSystemObject
Public pathbuf(10) As String
Public i As Long
Public level As Long
Public num As Long
Sub getfilename()
Dim n As Date
n = Now
Cells(3, 3) = n
ParentFolder = Range("B3").Value
Set fso = New FileSystemObject
Dim s As Folder
level = 0
num = 6
Cells(num, level + 2) = ParentFolder
Set fl = fso.GetFolder(ParentFolder)
Call getsubfolder(fl)
Range(Cells(6, 2), Cells(num - 1, 5)).Borders.LineStyle = xlContinuous
Set fso = Nothing
End Sub
Function getsubfolder(fp) As Object
For Each l In fp.SubFolders
level = level + 1
Debug.Print (l.Name)
Cells(num, level + 2) = l.Name
pathbuf(level) = l.Name
Set fpl = fso.GetFolder(fp + "\" + l.Name)
Call getsubfolder(fpl)
Next
For Each e In fpl.Files
Debug.Print (e.Name)
Cells(num, level + 3) = e.Name
num = num + 1
Next
i = Len(pathbuf(level))
fps = Left(CStr(fp), Len(fp) - i)
level = level - 1
Set fpl = fso.GetFolder(fps)
End Function
フォルダ一覧の取得
基本的には以前紹介した記事に書いてある内容と同様です。
↓こちらの記事をご参照ください。
上記記事に追加したコードの解説を以下に続けます。
親フォルダのパスの取得
以前の記事ではVBAのコード内に記入していた親フォルダのパスですが、一行のコードでセルから取得可能となります。
ParentFolder = Range("B3").Value
RangeでB3のセルに記入された親フォルダのパスを取得しています。
日付の更新
フォルダ内に後からファイルが追加されても自動更新はされません。
台帳のボタンを再度押す必要があります。
Dim n As Date
n = Now
Cells(3, 3) = n
上記コードで最終更新日と時刻をC3のセルに記入します。
罫線の自動挿入
見やすくするために罫線を追加します。
Range(Cells(6, 2), Cells(num - 1, 5)).Borders.LineStyle = xlContinuous
この1行でファイルがある最後の行まで選択し、罫線を格子状に引いています。
まとめ
- ファイル台帳はVBAで自動生成できる
- 日付の入力、罫線の挿入はVBAで数行で実装可能
- VBAがわからないけど業務効率化をしたい方は本記事内からダウンロードしてとにかく使ってOK