- ベストアンサー
Hyperlink関数をクリックしてくれるマクロ
こんにちわ! どなたか教えてくださいませんか? EXCELのセル“A1”にHyperlink関数が入れてありまして、 隣のセル“B1”に入れた文字を組み込んで、URLを生成し、リンクを作るようになっています。 こんな感じです。 =Hyperlink("http://●●●"&[B1]&"●●●/") それで、B1に文字を入れたら、自動的にそのリンク先を開くように、 つまりは、A1にできたリンクをわたしの代わりにクリックしてくれるようなマクロを作りたい のですが、どうすればいいでしょうか? いろいろやってみたのですが、どれもエラーになってしまいまして。 どうかよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
HYPERLINK関数はハイパーリンクオブジェクトを生成しないので、通常のマクロではハイパーリンク(ハイパーリンクオブジェクト)として取り扱うことができません。 というワケでチカラワザ: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range) if target.address <> "$B$1" then exit sub activeworkbook.followhyperlink application.evaluate(range("A1").formula) end sub A1に埋めておくHYPERLINK関数は,ご質問の通りで書いたのでは間違いなのは,実際に試してみればすぐに確認できますね。正しく作成してください。 B1に文字を記入してEnterすると,マクロが作動します。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
普通の、エクセル関数やVBAの課題ではないと思う。質問者の 思いつきというか、我儘だと思う。もっと上のレベルのAPIなどならできるかもしれないが。 それでシートにコマンドボタンを1つ貼り付けておいて、そのクリックイベントにハイパーリンクを 発動するようにしておいて 例えばSheet1のクリックイベントで Private Sub CommandButton1_Click() MsgBox "AAA" 'テスト用。ここは本当はHyperLinkのFollowのコード End Sub を作っておく。 そして標準モジュールに Sub test01() Application.Run "'C:\Documents and Settings\XXX\My Documents\Book2.xls'!Sheet1.CommandButton1_Click" End Sub と入れて、上記のフルパスのフォルダのBook2 の名で保存する。 そのブックを開いて、必要な都度test01を実行すれば、マウスで、シートの上記のボタンをクリックしたと同じ効果が発生するはず。 過去にもこのパターンの質問回答はある。 でもこんなことをするなら、プログラムの中に、必要なタイミングを見つけて(ChangeイベントでB1セルで起こったなど)、 Sub test02() ActiveWorkbook.FollowHyperlink "http://www.XXX.YYY" End Sub の1行を入れたら仕舞いではないですか。
お礼
さっそくお教えいただいて、ありがとうございます。 一応やってみたのですが、うまくいきませんでした。 わたしの今の能力では、残念ながら、よく理解できませんでした。 反対に、これだけ聞いてあっさりできるようなら、 けっこう試行錯誤はしてみたので、いずれ自力で解決できたと思います。 いろんな方法でネットで検索もしてみたのですが、 どうしても見つからなかったので、おたずねしたのでした。 こんど、ものを教えてくださるなら、まずは わたしのレベルや思いを受容してください。
お礼
さっそくご回答くださいまして、ありがとうございます。 うまくいきました! activeworkbook.followhyperlink application.evaluate(range("A1").formula) の1文だけがどうしても浮かばなかったのです。 HYPERLINK関数の書き方のまちがいもわかりました。 []よけいでしたね。実際には入れてませんでが、例文作るときにまちがえました。 わたしにもわかるように説明してくださって、 ほんとうにありがとうございました。