• ベストアンサー

Hyperlink関数をクリックしてくれるマクロ

こんにちわ! どなたか教えてくださいませんか? EXCELのセル“A1”にHyperlink関数が入れてありまして、 隣のセル“B1”に入れた文字を組み込んで、URLを生成し、リンクを作るようになっています。 こんな感じです。   =Hyperlink("http://●●●"&[B1]&"●●●/") それで、B1に文字を入れたら、自動的にそのリンク先を開くように、 つまりは、A1にできたリンクをわたしの代わりにクリックしてくれるようなマクロを作りたい のですが、どうすればいいでしょうか? いろいろやってみたのですが、どれもエラーになってしまいまして。 どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

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すると,マクロが作動します。

nekoponpon
質問者

お礼

さっそくご回答くださいまして、ありがとうございます。 うまくいきました! activeworkbook.followhyperlink application.evaluate(range("A1").formula) の1文だけがどうしても浮かばなかったのです。 HYPERLINK関数の書き方のまちがいもわかりました。 []よけいでしたね。実際には入れてませんでが、例文作るときにまちがえました。 わたしにもわかるように説明してくださって、 ほんとうにありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

普通の、エクセル関数や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行を入れたら仕舞いではないですか。

nekoponpon
質問者

お礼

さっそくお教えいただいて、ありがとうございます。 一応やってみたのですが、うまくいきませんでした。 わたしの今の能力では、残念ながら、よく理解できませんでした。 反対に、これだけ聞いてあっさりできるようなら、 けっこう試行錯誤はしてみたので、いずれ自力で解決できたと思います。 いろんな方法でネットで検索もしてみたのですが、 どうしても見つからなかったので、おたずねしたのでした。 こんど、ものを教えてくださるなら、まずは わたしのレベルや思いを受容してください。

関連するQ&A

  • Hyperlink関数をクリックしてくれるマクロ

    どなたか詳しい方教えていただけないでしょうか? ExcelのセルA1に以下のhyperlink関数を入れています。 =HYPERLINK(″#C″&MATCH(B1,C:C),″クリック″) 隣のB1に入れた数字を元にC列に存在する同じ数字先にジャンプするように関数を作ってます。 A1にできたリンクをクリックしたは、B1に入力されているものと同じ数字先のC列に飛ぶようにマクロを組みたいのですが、どうしたらいいでしょうか? ハイパーリンク関数がマクロに組み込めないのと色々調べてみましたがうまくいかないのでお手上げです。 どなたか詳しい方教えていただければと思います。 どうぞよろしくお願いします!

  • Excell:ユーザー定義関数で、HyperLinkを返したい

    エクセルで、ユーザー定義関数を作成しています。 戻り値をHyperLinkにしたいのですが、可能でしょうか? 指定したセルの値を参照して、動的にURLを 作成するところまでは、できたのですが、HyperLinkとして セルに書き戻す事ができません。 下記のように文字列になってしまいます。 =HyperLInk("http://hoge.php?var=10","●") ↑を、リンクとして機能させるには、どうすれば 良いかご存知でしたら、教えて下さい。 ※一旦URLだけを文字として表示させ、  その上に、HyperLink関数をかぶせれば、  目的が達成できることはわかっていますが、  それでは、使い勝手が悪いのです。 どうぞ、よろしくお願い致します。

  • マクロにてHYPERLINKのアドレスの取得方法を教えてください。

    マクロにてHYPERLINKのアドレスの取得方法を教えてください。 HYPERLINK関数を駆使してリンクを作っています。 =HYPERLINK(CELL("address",INDEX([○○○.xls]△△△シート!$1:$65536,MATCH("文字列",[○○○.xls]△△△シート!$B:$B,),MATCH("文字列",[○○○.xls]△△△シート!4:4,))),表示文字) という感じで別Excelファイルの行と列をMATCH関数を使いアドレスを作成しています。 出来たセルにマウスカーソルを持っていくと [○○○.xls]△△△シート!$AJ$114 アドレスが表示されます。 クリックするとちゃんと飛べます。 アドレスの表示を調べてみたところ Range("A1").Hyperlinks(1).Address というように記述する事で取得出来ると書かれていたので早速試してみたのですが インデックスが有効範囲にありません。と表示されてしまいます。 アドレスを取得するにはどうしたらいいのでしょうか?

  • エクセルのhyperlink関数を使って、次のように入力したいと思って

    エクセルのhyperlink関数を使って、次のように入力したいと思っています。 =HYPERLINK("http://www.aaa.com/1",1) =HYPERLINK("http://www.aaa.com/2",2) =HYPERLINK("http://www.aaa.com/3",3) こういった感じで、連続いくつも入力します。 関数のカンマの後ろの数字については、A1+1 と入力して、セルの右下にマウスを移動させそこからドラッグすればすぐに入力できますが、カンマの前のURLの数字の部分についても連動させたいのです。 どの様にすればいいのでしょうか?

  • EXCELのHYPERLINK関数の”文字列”について教えてください!

    HYPERLINK関数の「文字列」について 調べましたがさっぱりわからず、悩んでいます。 現在Sheet1のB1に =HYPERLINK("#Sheet"&ROW(A2)&"!A1",Sheet2!A1)  というように、Sheet2のA1にジャンプし、 Sheet2のA1が表示されるように、式を入力しました。 Sheet2のA1には文字が書かれています。 Sheet1のA1には何も書かれていません。 その式を連続コピーして、 B2を押すとSheet3のA1にジャンプし、Sheet3のA1の文字を表示する、 B3を押すとSheet4のA1にジャンプし、Sheet4のA1の文字を表示する、 というようにしたいのですが、 コピーすると =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet2!A2) =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet2!A3) このように、Sheet2のA2の値を返す というように コピーされてしまいます。 理想としては =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet3!A1) =HYPERLINK("#Sheet"&ROW(A3)&"!A1",Sheet4!A1) このように、A1は変わらず、シートの数字が1つずつ増えてほしいのです。 多少の関数はわかりますが、マクロはさっぱりわかりません。 関数を使うことで、こんなことは可能なんでしょうか? 説明が下手なんですが、どなたかわかられる方、教えてください(@_@)

  • EXCEL HYPERLINKの関数表示を文字に変える方法?

    EXCEL2002を使っています。 現在A1のセルに=HYPERLINK("C:\My Documents\1.xls")という式を入れています。A2のセルには左記式と同じでファイル名が2.xls、以降順番にA2000(2000.xls)まで同様の式を入れています。 現在、A1からA2000のセルまで関数の式が表示されてしまっているのですが、できれば関数の式は見せずに任意の文字を表示させ、さらにその文字をクリックすればリンクがはられるようにしたいのです。 文字を先に入力してメニューの挿入→ハイパーリンクとやれば希望通りの物ができるのですが、2000件ものマニュアル作業は避けたいと思います。 HYPERLINKの式を先に入力した場合でクリックのできる文字表示にする良い方法はないでしょうか?

  • VBAからのHYPERLINK関数のアドレス取得法

    いつもお世話になっています。Excel 2003のVBAについてご質問させてください。 あるセル上に、下記のように別名が指定されたHYPERLINK関数があります。 =HYPERLINK(配置先, ファイル名) 現在、VBAよりHYPERLINK関数が指し示す配置先(アドレス)を取得しようと思っています。 これを取得するにはどうすれば良いでしょうか? なお、以下のような付加条件があります。かなりワガママだとは自覚していますが、 なにとぞお知恵をお貸しください。 (1)「配置先」には、実際には複雑な分岐等があり、これを生成するロジックのVBA化は困難 (2)「配置先」だけ別セルに書き出すことは出来なくはないが、今回は避けたい (3)Excel 2010でも動作する必要がある。 (3)についてはこちらで動作確認致しますので、Excel 2003での情報をお願いします。

  • EXCELからのWEBの自動起動

    EXCELのシートでセルに検索ワードなどを含めてurlを自動生成しています。 URLを含むセルにHYPERLINKを設定していますが、各セルへのダブルクリックが必要です。 一つの操作で多数のセルのurlを自動起動したいのですが、マクロの知識がないためできません。 マクロのプログラムをどう書けばよいのか教えてください。 プラウザはFirefoxでEXCELは2000を使用しています。

  • CLEAN関数マクロ記述式!

    エクセルで、(例えば)A列のセル内改行されたデータを「CLEAN関数」でB列に表示させたい時、A列に入っている分のデータだけを隣のB列に表示させる場合のマクロの記述式を教えて下さい。セルA1「あああ 改行 いいい」→B1「あああいいい」、セルA2「ううう 改行 えええ」→B2「うううえええ」、セルA3「データなし」→B3「表示なし」  イメージご理解して頂けたでしょうか?要するにA列に入ってるセルのデータのみをCLEAN関数でB列に表示させ、A列に入ってない場合はCLEAN関数を適用しない場合の記述式です。どうか宜しくお願いします。

  • エクセル関数内の行番号を同じにしたい。

    A列にYesかNoを選ぶセルがあり、Yesの場合は、隣の列(B列)に "ここをクリック" という文字列を出し、別シートの同じ場所に飛び、そして、Noの場合は、隣の列(B列)に "OK"という文字列を出して終わり。ということがやりたいです。 1.B1に以下の関数を入力しました。 =IF(A1="Yes", HYPERLINK("#sheet2!A1","こちらをクリック"),IF(A1="No","OK"," ")) 2.これをコピーしてB2以下に反映しようと考えました。ですが、 リンク先の"#sheet2!A1"のA1の行番号が以下のように、増えてくれません。 =IF(A2="Yes", HYPERLINK("#sheet2!A1","こちらをクリック"),IF(A2="No","OK"," ")) 3.コピーするだけで、"#sheet2!A1"の部分のセルが1つ繰り上がるように(この場合、A1からA2に)するには、どのようにしたらいいのでしょうか? 4. 3.が出来ない場合、何か他の方法を教えて頂きたく。 5.当方、VBAの知識がないので、マクロを組みたくても組めないのが現状です。 以上よろしくお願いします。

専門家に質問してみよう