質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%

Q&A

解決済

4回答

16182閲覧

エクセルのHYPERLINK関数

ExcelVBAer

総合スコア1175

1グッド

0クリップ

投稿2018/06/07 01:57

編集2018/06/07 08:05

同Excelアプリ内で開かれている別ブックの特定セルに対して、
HYPERLINK関数で参照できるようにしたいのですが、
正しい設定方法が分からず困っています。

開かれていない別ブックに関しては、
以下のようにすれば参照できたのですが、
毎回セキュリティ確認ダイアログが表示されるので、
ブックを開いた状態からリンクで参照できればと思います。

構文:=HYPERLINK([BookPath]'SheetName'!Address)
例文:=HYPERLINK("[C:\Users\UserName\Downloads\Book1.xlsx]'Sheet1'!B2","link")
URL:https://goo.gl/nrrNrw

同Excelアプリ内で開かれている別ブックの特定セルに対して、
HYPERLINK関数で参照できる方法を、
ご存知でしたら教えて頂けますと助かります。


【追記1】
同Excelアプリ内で開かれている別ブックに対して、
数式で単なる参照をした場合に「='[Book1.xlsx]Sheet1'!$A$1」となりますが、
該当ブックを閉じると「='ブックのパス[Book1.xlsx]01'!$B$8」と、
数式内のパスの部分が調整されるので、
HYPERLINK関数でも同様にパスの指定方法が違うのだと推測しています。

ただ、数式と同じ調整ではHYPERLINK関数が認識してくれず、
特有の調整が必要なんだろうと思います。

できそうで出来ないもどかしさと、
やはり該当セルをクリックすることで該当箇所に移動できる利便性から、
なんとかならないのか、と悩んでおります。

また、セキュリティ上、信頼できる場所が変更できない環境という事もあり、
ダイアログが出ないよう設定を調整する方法は難しいと思っております。


【追記2】参考までにHYPERLINK関数の分かっている事を記載します
・同じブックの別シートのセルを参照する場合
=HYPERLINK("#'Sheet1'!A1","link")

・閉じている別ブックを参照する場合
=HYPERLINK("[ブックパス\Book1.xlsx]'Sheet1'!B2","link")

・開いている別ブックを参照する場合
※これが分かりません。
NG:=HYPERLINK("[ブックパス\Book1.xlsx]'Sheet1'!B2","link")
⇒毎回セキュリティのダイアログが出てきます

NG: =HYPERLINK("[Book1.xlsx]#'Sheet1'!A1","link")
⇒参照が正しくないとおこられます

NG: =HYPERLINK("#[Book1.xlsx]'Sheet1'!A1","link")
⇒参照が正しくないとおこられます

・・・分かってしまえば的なものだと思うのですが、どうすればよいやら。。。

どうぞ宜しくお願い致します。


【追記3】解決方法
・開いている別ブックを参照する場合
OK: =HYPERLINK("#'[Book1.xlsx]Sheet1'!A1","link")

セキュリティに関するダイアログが出なくなり、
画面遷移の挙動もスムーズになりました。

ladybird👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

自己解決

ご回答頂いた皆様、ありがとうございました!

色々なパターンを試して、ようやく分かりました!

=HYPERLINK("#'[Book1.xlsx]Sheet1'!A1","link")

この書き方で参照できました!

ポイントとしては3点です。
・パスの最初に「#」
・ブック名は[]で囲む
・ブック名+シート名を[']で囲む

色々なアドバイスを頂き、
本当にありがとうございました!

投稿2018/06/07 07:16

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/06/07 07:27

質問の追記殆ど見てなくて、別アプローチでの回答になってましたね。スミマセン。 手動でも自動でも、とにかくブックを開いておきさえすれば、解決した記述でメッセージは出ないってことですね。
ExcelVBAer

2018/06/07 07:33

コメント欄でもお知らせすればよかったです汗 なんかスミマセン。。。 解決した方法ではメッセージも出ないですし、 画面遷移の挙動も異なります。 手動・自動は計算方法の事でしょうか??
sazi

2018/06/07 07:40

>手動・自動は計算方法の事でしょうか? いえ、複数ブック開いておくってことではないのですか?
ExcelVBAer

2018/06/07 07:41 編集

もちろん、複数ブックを開いて参照を試しています。 確認した手順としては、以下の2通りで、どちらも同じく解決できてました。 ・手動でブックを開く ⇒ 解決方法で参照 ・フルパス指定のHYPERLINKでブックを開く ⇒ 解決方法で参照
sazi

2018/06/07 07:43

リンクした方法は試していますが、ブックを開くのには特に問題なかったので、ネットワーク共有先のファイルを開く時などには使えそうだと思いました。
ExcelVBAer

2018/06/07 07:43

あ、参照先が新規ブックだと、参照が正しくない、とおこられちゃうみたいですね(汗)
sazi

2018/06/07 07:44

成程、フルパスでもOKなんですね。
ExcelVBAer

2018/06/07 07:48

フルパスでも開けますが、セキュリティダイアログは出ちゃいます(汗) 言葉足らずですみません! ! フルパスHYPERLINK ⇒ ダイアログでOK ⇒ ブックが開く ⇒ 解決HYPERLINKで参照 というケースです(万が一というレベルの確認です...)
ladybird

2018/06/07 07:55 編集

あ、両方開いているときだけ動作すればよかったのですね。(この回答のだとBook1が閉じているときは動きませんよね?) 自分の中で勝手に「開いていないときは新たに開く」も要件にしてしまって難しく考えすぎていました^^; なにはともあれ解決してよかったです!
sazi

2018/06/07 07:51

フルパスの場合どのような記述ですか? =HYPERLINK("#C:\XXX\'[Book1.xlsx]Sheet1'!A1","link") とかだと駄目でした。
ExcelVBAer

2018/06/07 07:53 編集

>ladybird さん Book1, Book2 と開いた状態で、 Book1のシートAにHYPERLINK関数を設置し、 Book2のセルを参照する事が目的でした。 説明不足で申し訳ないです(大汗)
ExcelVBAer

2018/06/07 07:55

>sazi さん 閉じている別ブックを参照する場合は、 =HYPERLINK("[パス\Book1.xlsx]'Sheet1'!B2","link") という記述でブックを開く+該当セルへ移動 ができますよ~ ※#の記述とか、[']の記述が異なるのが面倒です。。。
sazi

2018/06/07 07:57

ああ、質問に書いてありましたね。。orz
guest

0

(ハックされないように)セキュリティの観点から、VBAでセキュリティを無効にすることはできないようです。
取り敢えずは、作業するブックでの設定等で回避するしか無いのではないかと。
2回目からはマクロの警告しません

追記

こちらが参考になるかもしれません。
Excelのハイパーリンクで警告を出さない方法

上記とは別に、Worksheet_FollowHyperlinkイベントでイベントキャンセルできるかなと思いましたが、イベント発生前にメッセージが出るので、駄目でした。
ハイパーリンク形状のセルにして、イベントでは自前でファイル開くとかも考えましたが、似せた形状にするのが面倒そう。

後は、セキュリティセンターのレジストリをVBEで弄るのが最後の手段ですかね、。

投稿2018/06/07 02:21

編集2018/06/07 04:11
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ladybird

2018/06/07 02:35

お言葉ですが、まだマクロが原因とは決まっていないのでは・・・(ネットワーク上のファイル等) うっかりモジュールが作られてしまった系ならモジュールを解放すれば解決しますし。
sazi

2018/06/07 02:51

断言してるつもりはなくて、情報提供的な回答です。 ExcelVBAerさんは経験豊富な方ですし。
ExcelVBAer

2018/06/07 03:32

すみません。。。「参照する」という言葉が適切でなかったようで、念の為に捕捉させてください。 HYPERLINK関数はハイパーリンクを数式で作成できるもので、 選択する事で該当セルへ移動できるできるようになるものです。 要望としては、セキュリティを無効化するという方向ではなく、 HYPERLINK関数で、開いている別ブックのセルを参照(セル選択時に該当箇所へ移動)できるようにしたい、という内容になります。 どうぞ宜しくお願い致します。
ExcelVBAer

2018/06/07 03:42

質問するのに慣れておらず、また説明不足ですみません。 質問内容を追加しましたが、不足ありましたらご指摘頂けますと幸いです。 どうぞ宜しくお願い致します。
ladybird

2018/06/07 04:18

>saziさん 質問者の方がそう判断できることを見越して、だったのですね。失礼しました。
ExcelVBAer

2018/06/07 04:20

saziさん 追記ありがとうございます! VBAのハイパーリンクにこんな方法があったとは!
ExcelVBAer

2018/06/07 04:24

URL説明の中で、『「ScreenTip」は通常のハイパーリンクを設定する画面では設定できない』とありますけど、 設定画面の右上の「ヒント設定」ボタンでできそうですね~
sazi

2018/06/07 04:26

開く動作は自前なのでどのみちイベントは作らないと駄目ですね。
ExcelVBAer

2018/06/07 04:27

こちらの環境でも、「Worksheet_FollowHyperlink」の前にダイアログが出てしまいました。。。 VBAを使うなら、該当セルをハイパーリンク的な色にしておいて、SelectionChangeイベントで拾ってなんとかするか。。。 けど、HYPERLINK関数で出来るハズなんで、 もう少し頑張ってみます。。。
sazi

2018/06/07 04:28

>ハイパーリンクを設定していますが、「address」は””にします。 は行ってます?
ExcelVBAer

2018/06/07 04:34

しまった!忘れてました(^^;) なんかハッカー的ですね!
guest

0

残念ながら、同じアプリで開いていようと開いていまいと、EXCELシートからすれば「別ブックを参照する」というルートは同じです。
「セキュリティ確認ダイアログを出したくない」という要望であれば、ダイアログが出ている原因によっては出さないようにできるかもしれません。なんというメッセージが表示されますか?

投稿2018/06/07 02:16

ladybird

総合スコア163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ExcelVBAer

2018/06/07 03:30

「参照する」という言葉が適切でなかったようで、念の為に捕捉させてください。 HYPERLINK関数はハイパーリンクを数式で作成できるもので、 選択する事で該当セルへ移動できるできるようになります。 ご質問の回答としましては、以下のようなメッセージです ***************************************************** タイトル:Microsoft Excel のセキュリティに関する通知 内容 :セキュリティに影響を及ぼす可能性のある問題が検知されました。 この場所は安全ではない可能性があります。 ---[リンク先のパス]--- ハイパーリンクは、コンピュータとデータに被害を与える場合があります。 コンピュータを保護するためには、リンク先が信頼できる場合のみハイパーリンクをクリックしてください。 続行しますか? YES / NO ******************************************************* 使うのが自分だけなら良いのですが、不特定な環境に配布するもので、 また、セキュリティの設定で信頼できる場所が変更できないようになっています。 自ブックの別シートを参照したり、 他ブック(閉じた状態)の別シートを参照したりできているので、 パスの指定について何らかの調整すれば、 ダイアログが出ないですむのではと推測しております。 どうぞ宜しくお願い致します。
ladybird

2018/06/07 04:22 編集

コメント・追記ありがとうございます。 「リンクを押すたび」だとしても内部では新たに開くのと同じ動きになっているのではないかと思っての回答でした。 いまのところはsaziさんが追記されている方法しかないでしょうか・・・ パスの部分の調整を試してみてできそうなら追記します。 ---追記 絶対⇔相対を切り替えても、結局は開くような処理が走るのは変わらないかもしれませんが;
ExcelVBAer

2018/06/07 04:19

そうなんです!フルパス指定だと、毎回開く処理が走ってダイアログが出ている感じです。 自分もパスを調整して、もう少し色々試してみます!
ladybird

2018/06/07 06:13

自分の環境がExcel2010なので試せないのですが、 2013以降なら、FORMULATEXT関数を使ってパスを取得できないでしょうか? =HYPERLINK(FORMULATEXT(開きたいセルを単純参照するセル)) みたいなイメージです
guest

0

他の回答で色々やりとりしてますが、実質的な質問としては以下でよいのですよね?

同Excelアプリ内で開かれている別ブックの特定セルに対して、
HYPERLINK関数で参照できるようにしたいのですが、
正しい設定方法が分からず困っています。

質問にある以下で問題なく参照できましたが、どのようになってしまうのでしょうか?

例文:=HYPERLINK("[C:\Users\UserName\Downloads\Book1.xlsx]'Sheet1'!B2","link")

追記
HYPERLINK関数を使わないといけない理由があるのでしょうか?
メニューから挿入するハイパーリンクであれば、開いてあるブックであれば警告は出ないようですが。

投稿2018/06/07 06:24

編集2018/06/07 07:09
ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ExcelVBAer

2018/06/07 06:52

ご質問にあるパスの指定だと、セキュリティに関する通知、というダイアログが毎回(ハイパーリンクで開いた後も)表示されてしまうのです。 ※ttyp03 さんの環境で出ていないのであれば、該当ブックが信頼できる場所に指定されている可能性が考えられます。 あちこち参照するので、毎回ダイアログが出ると作業効率が悪いので、 ダイアログが出ない方法を模索している次第です。 HYPERLINK関数の挙動から察するに、 フルパス指定だと、該当ブックが開かれてようが、開かれてなかろうが、 同様の処理になってダイアログが出てしまうのだと思います。 また、数式(「=A1」等)で外部ブックを参照した場合に、 該当ブックが開かれている時と、 該当ブックが閉じている時とで、 数式内部の参照パスが変動しているので、 HYPERLINK関数でもパスを調整(フルパスではなく、ブック名のみ等)をすれば、ダイアログが出ずに参照(該当セルに移動)ができる可能性が高いと考えております。
ttyp03

2018/06/07 07:01

なるほど。詳しい説明ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問