現在対象となっているファイル名などを表示するのに、フルパス名で表示すると長すぎて表示エリアに収まらない、ということがよくあります。しかし、ファイル名だけでなく、パス名も知りたい。
このために、こうしたらどうかというアイデアがふたつあります。
ひとつは、長すぎるフルパス名の途中を省略して、表示エリアに収まる長さにする、という方法です。たとえば
G:\WorkDesk\WorkDesk\030.HP\CAST FACTORY\VBA-tips.xlsm
↓
G:\WorkDesk\Work…TORY\VBA-tips.xlsm
といった具合です。これは、比較的簡単に実現できますが(「長い文字列を省略する」を参照)、全体がわからないのが、少し気持ち悪いですね。ただし、フルパス名が知りたいのは、そのファイルがハードディスク上にあるのか、USBメモリ上にあるのかがわかればよい、という程度のことであれば、これで十分という場合もあります。 ふたつめの方法は、通常はファイル名だけ表示していて、必要なときにフルパス名をきちんと表示してくれる、というものです。フルパス名の表示はその瞬間だけでよいので、画面を乱さないように、メッセージボックスか専用のユーザーフォームに表示させます。
ワークシート
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, ActiveSheet.Range(FileNameCellName)) _ Is Nothing Then Exit Sub Application.EnableEvents = False Me.Cells(1, 1).Select Application.EnableEvents = True ShowFullPath End Sub
DisplayFileName にフルパス名をわたしてそのうちのファイル名だけを表示させておきます。その後は、"FileName" のセルがクリックされるたびに、フルパス名が表示されます。
標準モジュール DisplayFileName() ShowFullPath()
Public Const FileNameCellName = "FileName" Private fullPath Public Sub DisplayFileName(filePath) Dim fileName fullPath = filePath fileName = Dir(filePath) ActiveSheet.Range(FileNameCellName).value = fileName End Sub Public Sub ShowFullPath() MsgBox fullPath, vbOKOnly, "フルパス名" End Sub