Excelからローカルにあるhtmlファイル(仮にaaa.htmlとします)へのハイパーリンクに関する質問です。

このaaa.htmlは、JavaScriptの記述により、引数を受け付けるような機能を持っています。
例えば「aaa.html?id=1&age=3」というURLへアクセスすると、idとageを受け取った結果を表示してくれます。
別のhtmlファイルからアンカータグで
<a href="aaa.html?id=1&age=3">リンク</a>
と記述すると、こちらが期待する動きをしてくれるのですが、
Excelファイルのハイパーリンクで「aaa.html?id=1&age=3」と記述しても、エラーが出てファイルが開けません。
Excelからでも「aaa.html」へのハイパーリンクであれば正常に開きますが、当然引数の情報が送れません。
何か解決策があれば教えていただきたいです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/08/03 11:24:37
  • 終了:2014/08/10 11:25:04

ベストアンサー

id:sasada No.2

sasada回答回数1482ベストアンサー獲得回数1332014/08/04 10:21:59

ポイント250pt

 こちらの環境はexcel2010ですけど。
 当該のセルを右クリックして表示される「ハイパーリンク」のダイア録の一番下、「アドレス」欄を適切に設定してやること(例:http://www.example.com/aaa.html?id=1&age=3)で、開けました。
 お試しになってみては如何でしょうか。

id:sunny_0701

アドバイス、ありがとうございます。とても助かります。

しかし、残念ながら、結論としてこちらの環境ではうまく動きませんでした。。。

違いは、
・htmlファイルがExceファイルと同パスにあるローカルファイルである点
・パラメータ部分に配列形式の記述がある点(こちらは未記載でした)
の2点でしょうか。
(どちらが原因で正常動作が確認できないかは不明です…)
具体的に言うと、ハイパーリンクには、
「aaa.html?id[0]=1&age[0]=3」
という相対パス+パラメータという構成で文字列が入ります。
これが、別htmlファイルのアンカータグからは動作して
Excelファイルのハイパーリンクからは動作しない状況です。
ちなみに、アドレス欄に同URLを入れると、カッコ部分である[]が
自動的に%5bと%5dに変換されていました。
それを避けるために、HYPERLINK関数で元のカッコのままの文字列を
指定してもダメでした。
相対パスでも「aaa.html」のみであれば、ハイパーリンクダイアログ経由、
HYPERLINK関数どちらでも正しく動きます。

また、追加で思いつかれることがあれば、コメントいただければ助かります。
よろしくお願い致します。

2014/08/07 11:14:38

その他の回答(1件)

id:degucho No.1

degucho回答回数258ベストアンサー獲得回数692014/08/03 14:11:55

ポイント250pt

ShellExecuteを利用してみてください
http://www.excel-excel.com/tips/vba_111.html

id:sunny_0701

運用方法に関する説明が不足していました。
申し訳ありません。
Excelファイル自体をエンドユーザに配布する形になるので、
今回はVBAを持たないファイルとしたいです。

2014/08/03 16:28:49
id:sasada No.2

sasada回答回数1482ベストアンサー獲得回数1332014/08/04 10:21:59ここでベストアンサー

ポイント250pt

 こちらの環境はexcel2010ですけど。
 当該のセルを右クリックして表示される「ハイパーリンク」のダイア録の一番下、「アドレス」欄を適切に設定してやること(例:http://www.example.com/aaa.html?id=1&age=3)で、開けました。
 お試しになってみては如何でしょうか。

id:sunny_0701

アドバイス、ありがとうございます。とても助かります。

しかし、残念ながら、結論としてこちらの環境ではうまく動きませんでした。。。

違いは、
・htmlファイルがExceファイルと同パスにあるローカルファイルである点
・パラメータ部分に配列形式の記述がある点(こちらは未記載でした)
の2点でしょうか。
(どちらが原因で正常動作が確認できないかは不明です…)
具体的に言うと、ハイパーリンクには、
「aaa.html?id[0]=1&age[0]=3」
という相対パス+パラメータという構成で文字列が入ります。
これが、別htmlファイルのアンカータグからは動作して
Excelファイルのハイパーリンクからは動作しない状況です。
ちなみに、アドレス欄に同URLを入れると、カッコ部分である[]が
自動的に%5bと%5dに変換されていました。
それを避けるために、HYPERLINK関数で元のカッコのままの文字列を
指定してもダメでした。
相対パスでも「aaa.html」のみであれば、ハイパーリンクダイアログ経由、
HYPERLINK関数どちらでも正しく動きます。

また、追加で思いつかれることがあれば、コメントいただければ助かります。
よろしくお願い致します。

2014/08/07 11:14:38
  • id:psne
    未検証ですが、ハッシュタグが利用できるのであれば、
    aaa.html#id=1&age=3
    といった形で引数を付加して、ページ側で読み取るという事もできるかと思います。
  • id:sunny_0701
    説明不足で申し訳ありません。
    Excelファイルは自分たちで出力していて、
    htmlファイル群は別システムで出力される仕組みなので、
    可能であればExcel側の設定や記述だけで解決したいです。
    html出力システムの担当に、記載していただいた形での
    引数の受け取りは可能かどうかを確認してみます。
  • id:nuggetclip27
    横からで申し訳ないですが、ぽけっとしすてむさんのコメントから
    こんな過去の質問を見つけました
    http://q.hatena.ne.jp/1291340820

    ついでに、面白そうなので一番上の回答の方法を
    しろうとのお遊びで勝手にやってみました(意図と違うかも…?)

    //パラメータがない、キーワード名が違う、値に区切り記号入ってる等のパターンは考慮してないよ!

    <html>
    <head>
    <script type="text/javascript">
    window.onload = function onLoad() {
    var param = GetFlagmentParam();
    var age = document.getElementById("age");
    var id = document.getElementById("id");
    age.innerHTML = "age : " + param["age"];
    id.innerHTML = "id : " + param["id"];
    }

    function GetFlagmentParam(){
    var param = {};
    var pairs = document.location.hash.slice(1).split('&');
    var pair;
    var i;
    var I = pairs.length;

    for (i = 0; i < I; ++i) {
    pair = pairs[i].split('=');
    param[pair[0]] = pair[1];
    }
    return param;
    }
    </script>
    <title>けんしょう</title>
    </head>
    <body>
    えい!結果表示だ!
    <div id="id"></div>
    <div id="age"></div>
    </body>
    </html>
  • id:sunny_0701
    アドバイス、ありがとうございます。

    Excel側での解決方法が見当たらない場合は、
    パラメータを受け取る側での改修となるかもしれませんので、
    その場合参考にさせて頂きたいと思います。
    具体的なコードの記述、とてもありがたいです。

    今後とも、どうぞよろしくお願い致します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません