Edited at

Excel HYPERLINK関数でハッシュ記号#を含んだファイルパスへのリンクを有効にする

More than 1 year has passed since last update.


はじめに

ExcelのHYPERLINK関数でファイルやフォルダへのハイパーリンクを作成する際に,

パスに#(ハッシュ記号)を含んでいると,#以降の文字列が無効となってしまい,

リンクが意図した動作をしない問題に対処した際のノートです.マクロは使用しません.

以下のリンク先に,"オフィスドキュメント内のハイパーリンクに#を使用することは認められていない"と書かれています.

"NOTE: The pound sign is a valid character to use in a file name but is not accepted in hyperlinks in Office documents."

You cannot use a pound character in a file name for a hyperlink in an Office program


環境

私がテストした環境は以下の通りです.

どちらの環境でも動作を確認できています.


  • テスト環境1


    • Windows 10


    • Excel 2010

       



  • テスト環境2


    • Windows 7


    • Excel 2013





解決策

解決策を以下に示します.

以下の2つの手順を踏み,パスを変換することで,対策が可能であることを確認しました.


パス変換手順


STEP-1. #%23 に変換する

%23# をURLエンコードした際の表記です.

パーセントエンコーディング - Wikipedia


STEP-2. パスの先頭に"file:///"を付加する.

file:/// はローカルファイルにアクセスするためのスキームです.

URIスキーム(URLスキーム)とは - IT用語辞典


パス変換の例

上述の手順を例で示すと以下の通りになります.

#を含むパスの例: C:\temp\#test.txt

STEP-1: C:\temp\%23test.txt

STEP-2: file:///C:\temp\%23test.txt


STEP1, 2をまとめたHYPERLINK関数の例

=HYPERLINK("file:///" & SUBSTITUTE("C:\temp\#test.txt", "#", "%23"))

これで,セルをクリックした際に"#test.txt"というテキストファイルが開けます.


ちなみに...

=HYPERLINK("C:\temp\#test.txt") とそのまま入力すると,#以下が無効となるため,セルをクリックした際にC:\temp\ というフォルダが開いてしまいます.

また, =HYPERLINK("#A1") などと記述することで,シート内の指定のセル(A1)にジャンプするリンクを作成できます(本来の使い方?).