excel ハイパーリンク 開かない

excel セルにurl 開かない

excel ハイパーリンク 開かない



これらの検索キーワードで表示される対処法では対処できなかったので、このページを作成しました。同様の事象解消の参考になれば幸いです。

 

目次

 

1.発生した事象

2.Webで検索した対処方法と結果

3.対処方法(1)レジストリの変更

4.対処方法(2)Webサイト側の変更

5.参考URL

 

 

 

1    発生した事象

Salesforce上のPDF URLをExcelのセルにリンクとして挿入したものを起動すると、https://aaaaaa.force.com/bbbbbb/apex/NCDS・・・ を開くことができません。必要な情報をダウンロードできません。 という エラーダイアログが表示される。

※本来はブラウザが起動しSalesforceのログイン画面が表示され、ID/PWを入力するとPDFが表示される。

 

f:id:ZTR:20201025100833p:plain

excelのエラーメッセージ

 

Windows10、IE11、office2016、お客様のゲートウェイ(プロキシ)経由でインターネットへ(セキュリティ対策を種々実施されている)、セキュリティソフトを一時停止しても改善せず。

 

 

No

切り分け

切り分け結果

1

IEでURLを入力した場合の起動

IEにURLを入力すると起動するため、Excelに問題があると想定

2

ExcelでURLを短く修正して起動する。

https://aaaaaa.force.com/bbbbbb/apex/NCDSRM__vfSRMOutPdf

上記までURLを短くしても、Excelからは正常起動せず。

https://aaaaaa.force.com/bbbbbb/

上記までURLを短くすると、Excelから正常起動する。

⇒上記①URLのレスポンスに対するExcelの挙動に問題あり?

3

IE開発者ツールで挙動を確認する

上記①②のURLについて挙動の違いを確認した結果、

① は、HTTP401(Unauthorized)のレスポンスになり、その後、JSで

window.location.href = url でリダイレクト処理されていた。

② は、HTTP200(OK)のレスポンスになり、その後、JSで

window.location.href = url でリダイレクト処理されていた。

 

E開発者ツールのリクエスト失敗URL(PDFのURL)のレスポンス結果のHTML抜粋

HTTP401のレスポンスで、以下HTMLが返却されていた。

<html><head>

    <meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

リダイレクト先のURL

  <script>

function redirectOnLoad(){

  var escapedHash = '';

  var url = 'https://aaaaaa.force.com/bbbbbb/login?ec=302&inst=

     〜中略〜

Bss1fE%252BWdXcQXuCFIGAwpKigGY3S3xjpH%26dataId%3D0060I00000g06MLQAY';

  if (window.location.hash) {  escapedHash = '%23' + window.location.hash.slice(1);}

URL中に“#”がある場合の対策

  if (window.location.replace){

      window.location.replace(url + escapedHash);

} else {

    window.location.href = url + escapedHash;}

リダイレクトされる

  }

  redirectOnLoad();

 </script>

 </head> </html>

リクエスト成功URL(トップ画面URL)のレスポンス結果のHTML抜粋

HTTP200のレスポンスで、以下HTMLが返却されていた。

<html><head>

    <meta HTTP-EQUIV=\"PRAGMA\" CONTENT=\"NO-CACHE\">

リダイレクト先のURL

    <script>

      function redirectOnLoad() {

        if (this.SfdcApp && this.SfdcApp.projectOneNavigator) {

          SfdcApp.projectOneNavigator.handleRedirect('/bbbbbb/login');

        }else if (window.location.replace){

          window.location.replace('/bbbbbb/login');

        }else{

          window.location.href ='/bbbbbb/login';

リダイレクトされる

        }

      }

      redirectOnLoad();

    </script>

</head></html>

 

 

2  Webで検索した対処方法と結果

下記レポートを順に試す(レジストリ変更も試す)も改善せず。
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_outlook-mso_win10-mso_2016/outlook2016ハイパー/6fce56e2-1999-4a69-bd98-0f5edc0137a8

 

「原因はよくわからないが、Microsoftが配布しているFix itで修復することができる」との記載があり、以下URLのサイトを元に試してみるも改善せず。

http://support.microsoft.com/ja-jp/kb/310049/ja

※上記URLの対応(fix)は、HKCR\.html のレジストリ値(文字列)を"htmlfile"に設定するもので、この前に試したレジストリ変更と実施内容は変わらずでした。

 

関連する記事としてこちらも発見しこちらで解消しました。この部分を改めて3で記載しますが、その部分の解説が分かり易かったので引用します。
https://social.msdn.microsoft.com/Forums/ja-JP/ff24d7a6-d0c7-4387-8263-a3ab9cd4d7b9/office?forum=officesupportteamja

 

※同ページから引用(下線は当ページで追加)

”Office はファイル内のリンクを開くとき、 OS または IEコンポーネントを用い、そのパスを処理します。

パスを処理する過程では、リンク先のサーバーがどのようなものであり、どのような機能を提供しているかなどを確認します。

このような処理を行う目的は、対象の Web サーバーへの到達確認や、対応している機能を確認するため等が挙げられます。

しかしながら、プロキシサーバを使用している場合などの特定の条件下では、認証ダイアログが表示されたり、正常に開かないといった事象が発生する可能性があります。

この時、レジストリ ForceShellExecute を 1 に設定すると、シンプルな形でリンクを開こうとするようになり、事象が改善する可能性があります。”

 

 

3    対処方法(1)レジストリの変更

資料Error message when selecting hyperlink in Office: "Cannot locate the Internet server or proxy server"

docs.microsoft.com

このレジストリを設定した場合、Office アプリケーションでは Shell の機能を利用してハイパーリンクを処理するとのこと。
結果、直接ブラウザで URL が処理され、本事象を回避できる可能性があるとのこと。

以下のレジストリを設定。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Common\Internet
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\9.0\Common\Internet
名前: ForceShellExecute
種類: DWORD
値: 1

- 参考資料
Office のハイパーリンククリックで生じる問題への対処について (ForceShellExecute レジストリによる対処と影響)

social.msdn.microsoft.com

 

4    対処方法(2)Webサイト側

  • 認証前のURLをSFDC側で処理する際、HTTP401ではなくHTTP200を返すようWebAPを修正。

ExcelでHTTP401を受信すると障害が発生する場合があるという想定の元、WebAP側を修正し、HTTP401を返却しないようにする対応。ここは追って加筆修正します。

 

 

5    参考URL

https://qastack.jp/superuser/444984/excel-hyperlink-not-redirecting-properly-bug

http://houhouzensho.blog110.fc2.com/blog-entry-903.html

https://support.microsoft.com/ja-jp/help/310049/hyperlinks-are-not-working-in-outlook

https://docs.microsoft.com/ja-jp/office/troubleshoot/office-suite-issues/cannot-locate-server-when-click-hyperlink

インターネットの情報を見ると、ExcelのURLリンクにはバグがある記載が多く存在するため、Excelのバージョンやパッチ状況によって、リンク先のURLが正常に起動されない条件が一定存在するようです。

また、Office製品がインターネットにアクセスする際は、 Microsoft Office Protocol Discovery というIE部品を利用してURLをチェックしてからインターネットにアクセスするという情報があり、IEExcelとではインターネットへのアクセス方法が異なるみたいです。

その結果、HTTP401(認証エラー)とHTTP200(正常)のレスポンスコードの違いによってExcel側のインターネットアクセスの挙動が変わる、または、「HTTP401+リダイレクト」という2つの条件が重なった時、正常処理されないということが起こっていた、という内容と対処方法でした。参考まで。