• ベストアンサー

エクセルマクロによるハイパーリンク

エクセルマクロにてブラウザを起動させ指定サイトを開く方法を教えて下さい。 なお、セルに直接URLを入力し同セルをダブルクリックすれば可能な事は承知しています。 以上、よろしくお願いします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

エクセルの自動ハイパーリンク機能が嫌いで切っている一人です。 でも、時々URL群を記入したものからブラウザを起動したいことがあるので、ダブルクリックでセル値のURLへリンクさせる以下のマクロを使用しています。 >IEは起動が遅く、更に、2つ、3つと同時に開こうとすると幾つもIEが >起動されるため~~ 同様に感じましたので、ブラウザはIEのままですが、一度開けば以後はそれを利用するようにして、複数のブラウザが次々と起動されることがないようにしています。ご参考まで。 (エラー処理で判定していますが、エラーの種類を忘れてしまいました。一度エラー処理をはずして、そちらの環境でも同じエラー番号でOKかご確認ください。) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   If Left(Target.Text, 4) <> "http" Then Exit Sub   UrlDisp (Target.Text) End Sub Sub UrlDisp(url As String) Static IE As Object   On Error Resume Next   IE.Navigate (url)   If Err = 91 Or Err = -2147417848 Then     Set IE = CreateObject("InternetExplorer.Application")     IE.Navigate (url)   End If   On Error GoTo 0   IE.Visible = True End Sub

list
質問者

補足

早速の御回答ありがとうございました。 確認させていただいたところ 複数回IEを起動しても、複数のIEが起動するのではなく、同じIEで処理されたのは確認しましたが、2回目以降は別のタグにすることは出来ないのでしょうか。 以上、よろしくお願いします。

その他の回答 (6)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.7

標準モジュールにコピペしてるんじゃないかな・・? #4 ご回答の貼り付け場所は、シートモジュールですよ。

list
質問者

お礼

御回答いただいた方々 何が原因であったか判断がつきませんが 希望通りに動作する様になりました。 ありがとうございました。 今後ともよろしくお願いします。

list
質問者

補足

御回答ありがとうございました。 初めは、#4に記載の Option Explicit Dim objIE As Object ~    Cancel = True End Sub をシートモジュールに記載し、その後を標準モジュールに記載しました。 今回、全てをシートモジュールに書き換えましたがIEがタグではなく、毎回、別のIEが起動されました。 なお、記載していませんでしたがIEのバージョンは8です。 以上、ご迷惑をかけますが、よろしくお願いします。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.6

>既に解除したのですが・・ >上手く出来ません。 Excelのセルに設定されたハイパーリンクをまとめて解除する http://www.atmarkit.co.jp/fwin2k/win2ktips/870hyperlink02/hyperlink02.html

list
質問者

補足

ハイパーリンクとして設定されているセルは全て解除しました。 ですが、上手くいきません。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

セル上のURLがハイパーリンクにならないように [ツール]-[オートコレクトのオプション]-[入力オートフォーマット]タブ □インターネットとネットワークのアドレスをハイパーリンクに変更する ↑チェックを解除してくださいね

list
質問者

補足

何度も申し訳ありません。 既に解除したのですが・・ 上手く出来ません。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

ダブルクリックでの実行がお望みなら (fujillinさんのコードを一部お借りしています。) Option Explicit Dim objIE As Object Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    If Left(Target.Text, 4) <> "http" Then Exit Sub    UrlDisp (Target.Text)    Cancel = True End Sub Sub UrlDisp(url As String)    On Error Resume Next    objIE.Navigate2 url, &H800    If Err Then       Set objIE = CreateObject("InternetExplorer.Application")       objIE.Visible = True       objIE.Navigate url    End If    On Error GoTo 0    AppActivate objIE End Sub

list
質問者

補足

私の間違いがありました。 起動はしました。 でも、複数のIEが起動されてしまいます。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

No2です。 こちらにタブブラウザの環境がないので、わからないのですが… 検索して見ると、↓のような情報がありました。 Navigate2メソッドを使用すれば、良いらしいです。 http://www.happy2-island.com/vbs/cafe02/capter00711.shtml

list
質問者

補足

再三、御回答いただきありがとうございました。 初歩的な質問で申し訳ありませんが いただいたサイトを確認しテストしたのですが上手く動作しません。 標準モジュールに入れたのですが間違いなのでしょうか。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1
list
質問者

補足

早速の御回答ありがとうございました。 起動させることが出来ました。 ただ、IEは起動が遅く、更に、2つ、3つと同時に開こうとすると幾つもIEが起動されるため、IE以外のブラウザを使用するかタグを使用して開くことは出来ないでしょうか。 再度、申し訳ありませんが、よろしくお願いします。