none
VBAのHyperlink(1).Followというコマンドについて RRS feed

  • 質問

  • 概略、次のようなEXCELの表の中でハイパーリンクを設定し、コマンドボタンを押すことで目的のハイパーリンク先のファイルが立ち上がるようマクロを組んでいます。
     選択項目の列(C列)  ハイパーリンクの列(J列)
     A01の事項        A01.xlsx
     A02の事項        A02.xlsx
      ↓           ↓
     A06の事項        A06.xlsx
     B01の事項        B01.xlsx
      ↓           ↓
     B05の事項        B05.xlsx
     C01の事項        C01.xlsx
      ↓           ↓
     C08の事項        C08.xlsx
    以下300行程度

     このような表で、例えば「A06の事項」にカーソルを置いて「コマンドボタン」を押すと、同じ行で「offset」してハイパーリンクの列にアクティブセルが移動し、そのセルに設定された「A06.xlsx」というファイルがHyperlink(1).Followというコマンドで開くように「コマンドボタン」を設定しています。
      ActiveCell.Offset(0, 7).Hyperlinks(1).Follow
     しかし、なぜかそのかたまりの最初(この場合は「A01.xlsx」、あるいはB05の事項を選んだ時には「B01.xlsx」)が開いてしまうという現象が起こり、悩んでいます。そしてまた、時に正しく「A06.xlsx」が開くこともあり、結果が一定しません。
     リンク先につきましては、手動でハイパーリンクを設定しているセルをクリックしますと正しいファイルが表示されるので間違ってはいないはずです。
    選択項目の列は「C」列、ハイパーリンクを設定しているセルは「J」列ですので、VBAの記述を
     Dim Hbasho As String
     Dim Ichi As Integer
     Ichi = ActiveCell.Row
     Hbasho = "J" & Ichi
     Range(Hbasho).Hyperlinks(1).Follow
     とやってみても、直接、選択項目の列のどれかの行を選択してから
      ActiveCell.Offset(0, 7).Hyperlinks(1).Follow
     としてみても結果は上に述べた通りそのかたまりの最初のファイルが開いてしまうと言う現象に遭遇しています。
    しかたなく、現在はアクティブセルをJ列に移動するだけで止めて、マウスでハイパーリンクを押すことで運用しています。

    何かこれを解決する方法はありますでしょうか?お教えいただけたら幸いです。
     ちなみに、OSはWindows10、EXCELは2013です。


    • 編集済み muhoujan 2015年12月10日 7:03
    2015年12月10日 7:02

回答

  • ハイパーリンク付きのセルをドラッグコピーして、リンクだけハイパーリンクの編集で変更すると起きたような・・・

    ドラッグコピーしたかたまりの最後のセル(今回だとJ列のA06.xlsx、B05.xlsx、C08.xlsxですかね)にある
    ハイパーリンクを一旦削除して手動で追加し直したら、現状のマクロで正しく動作しませんか?


    • 編集済み せれ 2015年12月10日 8:46
    • 回答としてマーク muhoujan 2015年12月10日 10:54
    2015年12月10日 8:38

すべての返信

  • ハイパーリンク付きのセルをドラッグコピーして、リンクだけハイパーリンクの編集で変更すると起きたような・・・

    ドラッグコピーしたかたまりの最後のセル(今回だとJ列のA06.xlsx、B05.xlsx、C08.xlsxですかね)にある
    ハイパーリンクを一旦削除して手動で追加し直したら、現状のマクロで正しく動作しませんか?


    • 編集済み せれ 2015年12月10日 8:46
    • 回答としてマーク muhoujan 2015年12月10日 10:54
    2015年12月10日 8:38
  • コード的に解決するなら、Hyperlinksをループで回して、それぞれのHyperlinkのRange.Addressと、目的のセルのAddressが一致してるか確認する、でいけませんかね。
    2015年12月10日 9:28
  • ありがとうございます。
    確かに生産性を考慮して、1つのハイパーリンクを正当な方法で設定し、残りをフィルコピーを使って中のリンク先だけを書き換えると言う方法で作っていました。
    教えていただいた方法で試してみたところ、正しく表示されるようになりました。
    まだ試作品として作ったファイルで実行してみただけですが、そこでは望み通りの結果が出るようになりましたので、明日にでも実際運用しているファイルで試してみたいと思います。
    ありがとうございました。
    2015年12月10日 10:53
  • ご回答、ありがとうございます。

    今回は、私が横着して1つのハイパーリンクを正当な方法で設定し、残りをフィルコピーを使って中のリンク先だけを書き換えると言う方法で作っていたためであろうことがわかりました。これをいったん全部消して、1つ1つハイパーリンクを正当な方法で設定していくことで解決できました。

    ありがとうございました。

    2015年12月10日 11:54