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

このQ&Aのポイント
  • マクロを使用してHYPERLINKのアドレスを取得する方法を教えてください。
  • HYPERLINK関数を使用してリンクを作成していますが、アドレスの取得方法がわかりません。
  • Range("A1").Hyperlinks(1).Addressという記述を試しましたが、エラーメッセージが表示されます。アドレスの取得方法を教えてください。
回答を見る
  • ベストアンサー

マクロにて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 というように記述する事で取得出来ると書かれていたので早速試してみたのですが インデックスが有効範囲にありません。と表示されてしまいます。 アドレスを取得するにはどうしたらいいのでしょうか?

  • WDY
  • お礼率85% (188/219)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

このようなコードになります。 ちょっとトリッキーだと思います。 >アドレスを取得するにはどうしたらいいのでしょうか?    Sub Test1() 'Hyperlink関数から取り出すマクロ  Dim fml As String  Dim buf As String  Dim myAdd As Variant  Dim c As Range  For Each c In Range("A1:A10")   If c.HasFormula And InStr(1, c.Formula, "hyperlink", 1) > 0 Then    fml = c.Formula    buf = Mid(fml, 1, InStrRev(fml, ",") - 1)    buf = Replace(buf, "=hyperlink(", "", , , 1)    myAdd = Evaluate(buf)    If Not (IsError(myAdd)) Then     c.Offset(0, 1).Value = myAdd    End If   End If  Next End Sub

WDY
質問者

お礼

evaluate関数なんてものがあったんですね。 ありがとうございます。助かりました。

関連するQ&A

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

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

  • 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つずつ増えてほしいのです。 多少の関数はわかりますが、マクロはさっぱりわかりません。 関数を使うことで、こんなことは可能なんでしょうか? 説明が下手なんですが、どなたかわかられる方、教えてください(@_@)

  • HYPERLINK関数でファイル名が取得できなくて困ってます

    お世話になります 野暮用でHYPERLINK関数を使おうと思い =HYPERLINK(ADDRESS(5,2,4,TRUE,"sheet1"),"B5") としてみたのですが、 「指定したファイルを開くことが出来ません」と 怒られてしまいました とほほ そこでこちらのサイトの過去の履歴を調べてみたところ http://oshiete.coneco.net/qa515869.html でtbobi様の発言を見つけました この内容を要約するとExcel2007の場合 =HYPERLINK("[Book1.xlsx]"&ADDRESS(5,2,4,TRUE,"sheet1"),"B5") とすると良いとのことで 実際にリンクが確立することも確認できたのですが このファイル名記載… くせ者です テキスト形式での記載ですので 恐らくブック名を変更しても追随しないと思われます 此は頂けません 余りに保守性が低くなりすぎます 何とか今開いているブックのファイル名を 関数で取得する方法はないものでしょうか? 出来ればビジネスシーンで標準的に使えるもので出来ると助かります。 もしくは何か良い代案はないでしょうか? 困ってます どうぞ御指南宜しくお願い致します。

  • =CELL("filename")で取得したファイル名をHYPERLI

    =CELL("filename")で取得したファイル名をHYPERLINK関数で使いたい。 エクセルで「目次」というファイルを作り、そこからHYPERLINK関数で別のファイルにリンクを貼りたいと思っています。 万が一ファイルの場所が移動した場合にも、リンクが切れないように、=CELL("filename")で取得したブック名をHYPERLINK関数で使ったらどうかと思うのですが、うまくできません。 考えた方法は、 (1)ファイル名(テスト1)sheet1のA1のセルに=CELL("filename")と入力したものをコピーして、ファイル名(目次)sheet1のA1にリンク貼り付けする。 (2)(1)で表示された(目次)sheet1のA1のファイル名をHYPERLINK関数の中に使って、リンクを貼れるようにする。 としたいのですがどのように書けばいいのでしょうか。 よろしくお願いいたします。

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

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

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

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

  • INDEX MATCH HYPERLINK 

    こんにちは。 エクセル表で社員の勤怠を入力しています。 表はA1からL10までの範囲で、A1は空欄、B列は日付、C1からL1までは10/1から10/10までの日付が入力されています。A2はCODE、B2は氏名の列の項目名、C2からL10までは曜日が入力されています。A3から下にA10までの列はそれぞれ社員コードとなる数字が、B3から下にB10までは社員名が 入力されています。C3からL10までは特に何も入力されていない状態ですが、入力規則でリストから、項目を選ぶ形式です。また、C3からL10までは検索スペースという名前をつけてあります。入力作業の補助のために、N4のセルに日付を入力し、N7に社員コードを入力して、N12をクリックすると、表の該当の箇所にジャンプする関数を作成したいのですが、うまくいきません。 式は、=IF(ISERROR(HYPERLINK("#検索スペース"&INDEX($B$2:$L$10,MATCH(N4,$C$1:$L$1,0),MATCH(N7,$A$3:$A$10,0)),"検索")),"値を入力してください!",HYPERLINK("#検索スペース"&INDEX($B$2:$L$10,MATCH(N4,$C$1:$L$1,0),MATCH(N7,$A$3:$A$10,0)),"検索"))です。 N12をクリックすると「参照が正しくありません」とエラーメッセージが現れます。どこがおかしいのか、教えてくださえるかた、お願いします。 説明が悪いようでしたら補足いたしますので、ご質問ください。 よろしくお願いします。

  • Excelで別シートの任意の文字列にリンクを貼りたい

    Excel2002を使用しています。 例えばSheet1のセルに入力してある「●」をクリックしたらSheet2に入力してある「5965」(任意の文字列)に飛ぶようにしたいのですが、うまくできません。 もともとSheet2にはセル番地でリンクをはっていたのですが、Sheet2のデータが増えてきて行にズレがでてきたりしたため、任意の文字列でリンクが設定できないかなと思いました。 以前あった質問『ハイパーリンクの参照セルのズレは防げるか?』の回答 =HYPERLINK(CELL("address",INDEX(Sheet2!A:A,MATCH("CRCN-40094",Sheet2!A:A,))),"CRCN-40094") で試してみたのですが、クリックしても別シートには飛びませんでした。 なにか良い方法はあるでしょうか?

  • エクセル2003でハイパーリンクのセルからURLアドレスを取得する関数はありますか?

    エクセル2003でハイパーリンクのセルからURLアドレスを取得する関数はありますか? ハイパーリンクを作成する関数は、=HYPERLINK("URLアドレス", "表示名称")で可能ですが、この逆で、"URLアドレス"を取得する関数を探しています。 例えばこのセルが、A1にあったとして、B1に =A1とすると、B1には「表示名名称」が表示されます。 C1に「URLアドレス」を表示させるVBAでなく関数が知りたいです。 無ければ、VBAでも構いません。 よろしくお願いいたします。

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

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

専門家に質問してみよう