エクセルでは、1つのセルに3万文字くらい入力できます。
しかし、関数や数式を使おうとすると、さまざまな上限に達してエラーになりました。
そのエラーの事例集と回避方法です。
特に、パーセント記号を含んだURLは、文字数が長くなりがちですので、ハイパーリンク関数の上限に達しやすくなります。
回避方法ですが、Excelで長いURLを開くには、Excel VBAのシェル関数 Shell() を使います。
テキストとして入力した長いURLを、VBAマクロで取得して、シェル関数でブラウザに渡すアプローチになります。
ハイパーリンク関数やハイパーリンクの編集からでは、長いURLをハイパーリンクにすることができませんでした。
一方で、リブレオフィスカルク (LibreOffice Calc) なら、長いハイパーリンクが設定できました。
詳しい上限は調べていませんが、てっとり早く長いURLを扱いたいときは、リブレオフィスを使うのがいいと思います。
Excelの仕様
公式サイトの説明
マイクロソフト公式ページの説明です。
日本語の説明
Excel の仕様および制限 – Excel
英語の説明
Excel specifications and limits – Excel
検索キーワード
マイクロソフトのURLはリンク切れになるかもしれないので、検索キーワードも紹介します。
以下のキーワードで検索すれば、おそらくエクセルの仕様のページが見つかると思います。
検索キーワード例
"Excel の仕様および制限"
"セルが含むことができる合計文字数"
"1つの関数に指定できる引数"
"Excel specifications and limits"
"Total number of characters that a cell can contain"
"Arguments in a function"
ハイパーリンク関数の上限は255文字
URLは最大255文字までだった
エクセルのハイパーリンク関数に長いURLを設定すると、エラーになりました。
=HYPERLINK("***255文字を超えたURL***")
数式内の文字列の上限は 255 文字です。255 文字より長い文字列を作成するには、CONCATENATE 関数または連結演算子 (&) を使用してください。
別名を設定するとURLに使える文字数が減った
ハイパーリンク関数には別名(べつめい)を設定できます。
HYPERLINK(リンク先, [別名])
別名で文字を使った分だけ、URLに使える文字列が減りました。
255文字以内のURLでも、別名をつけているとエラーになる場合がありました。
255文字の『URL』と255文字の『別名』はセル参照で入力できた
ハイパーリンク関数でセルを参照すれば、『255文字のURL』を使いながら『255文字の別名』を使うことができました。
A1セル:***255文字のURL***
B1セル:***255文字の別名***
A2セル:=HYPERLINK(A1,B1)
結果:***255文字の別名でハイパーリンクができた***
『URL』の上限は255文字で『別名』の上限も255文字だった
255文字を超えた『URL』はNGだった
ほかのセルに長いURLを入力して、そのセルをハイパーリンク関数に渡すとNGでした。
A1セル:***255文字を超えたURL***
A2セル:=HYPERLINK(A1)
結果:#VALUE!
255文字を超えた『別名』はNGだった
ほかのセルに長い別名を入力して、そのセルをハイパーリンク関数に渡すとNGでした。
A1セル:***短いURL***
B1セル:***255文字を超えた別名***
A2セル:=HYPERLINK(A1,B1)
結果:#VALUE!
ハイパーリンクの挿入・編集もURLは255文字まで
右クリックメニューの『ハイパーリンク(H)…』や『ハイパーリンクの編集(H)…』から設定できるURLの上限も255文字まででした。
ハイパーリンク関数を使ったCSVは上限で切り捨てられた
ハイパーリンク関数を使ったCSVを読み込むと、長いURLのセルだけ文字が切り捨てられて、不完全な数式になりました。
Excelで扱えるハイパーリンクは255文字まで
Excel 2007で動作確認しました。
単なるテキストなら、1つのセルに3万文字くらい入るので、なんとか長いURLをハイパーリンクにできないかと、いろいろ試しました。
でも、できなかったです。
Excelで長いURLを開くにはVBAのシェル関数を使う
Excelで長いURLを開くには、Excel VBAのシェル関数 Shell() を使います。
長いURLは、単なるテキストとしてセルに入力しておきます。
シェル関数に『使いたいブラウザ』と『開きたいURL』を渡せば、Excelから長いURLを開くことができました。
VBAでセルからURLを取得して、シェル関数でブラウザを起動するアプローチです。
これで、URLの長さにかかわらず、いろいろなサイトをExcelから開けるようになりました。
以上です。