ここから本文です

エクセル2010 ハイパーリンク関数とマクロについて

mmm********さん

2014/6/2021:15:44

エクセル2010 ハイパーリンク関数とマクロについて

教えてください!
G5のセルにハイパーリンク関数が設定されております。
マクロを使って、G5に設定されているリンク先のエクセルブックを開きたいのですが、うまくいきません。
G5に入るリンク先は、条件によりかわるので、あくまでもハイパーリンク関数を使用してを前提です。

いろいろ調べてやってみているのですが、私のスキルではうまくいきません。
どなたか、どのようにマクロを記述すればよいのか教えてください!
よろしくお願いします。

閲覧数:
312
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

アバター

ID非公開さん

2014/6/2107:08:05

HYPERLINK関数のリンク先が計算によって求まるようになっているのですね。
真面目にExcel VBAで字句解析をするのは大変ですから、工夫してみました。

まず、HYPERLINK関数の第一引数を取り出す必要がありますが、"HYPERLINK("を"CHOOSE(1,"に置き換えれば、第一引数が取り出せますね。あとはEvaluateメソッドで評価してはどうでしょう。

G5セルにHYPERLINK関数が入っているのは間違いないとして、そこのエラーチェックが不要なら

Workbooks.Open Application.Evaluate(Replace(Range("G5").Formula, "HYPERLINK(", "CHOOSE(1,"))

とこんなことで実現できないでしょうか。

質問した人からのコメント

2014/6/21 07:31:11

感謝 gekkasuikou さま ありがとうございます。
やりたいこと(やらなきゃいけないこと)ができるようになりました。
さっとスマートに、嫌味ひとつなく教えていただきまして、ありがとうございます。
ja7awuさま vcx000xcvさま もありがとうございます。
ハイパーリンク関数のくだりの説明があいまいでした。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

ja7********さん

2014/6/2023:25:49

> G5のセルにハイパーリンク関数が設定されております。

HYPERLINKワークシート関数ですね。 =HYPERLINK(リンク先ブック)
ハイパーリンク オブジェクトのことでは、ありませんよね。

それでは、こんな感じで如何でしょうか。

Sub Open_Link()
Dim FPathN As String
With Range("G5")
    If .HasFormula And InStr(.Formula, "=HYPERLINK") = 1 Then
        FPathN = Mid(.Formula, InStr(.Formula, "(") + 2)
        If InStr(FPathN, ",") > 0 Then
            FPathN = Left(FPathN, InStr(FPathN, ",") - 2)
        Else
            FPathN = Left(FPathN, InStr(FPathN, ")") - 2)
        End If
        If FPathN Like "*.xls*" Then
            Workbooks.Open FPathN
            MsgBox "リンク先ブックを開きました。", vbInformation
        Else
            MsgBox "リンク先がExcelブックか確認してください。"
        End If
    Else
        MsgBox "HYPERLINK関数でブックにリンクを" & _
                    "設定されているか確認してください。", vbExclamation
    End If
End With
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

vcx********さん

2014/6/2022:06:56

mmmasamaoさん

こんな感じとか。

Sub Test()
Dim h As Hyperlink, wb As Workbook
For Each h In ActiveSheet.Hyperlinks
If h.Parent.Address = "$G$5" Then
Set wb = Workbooks.Open(h.Address)
Exit For
End If
Next h
End Sub

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる