- ベストアンサー
エクセルマクロによるハイパーリンク
エクセルマクロにてブラウザを起動させ指定サイトを開く方法を教えて下さい。 なお、セルに直接URLを入力し同セルをダブルクリックすれば可能な事は承知しています。 以上、よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
エクセルの自動ハイパーリンク機能が嫌いで切っている一人です。 でも、時々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
その他の回答 (6)
- KenKen_SP
- ベストアンサー率62% (785/1258)
標準モジュールにコピペしてるんじゃないかな・・? #4 ご回答の貼り付け場所は、シートモジュールですよ。
お礼
御回答いただいた方々 何が原因であったか判断がつきませんが 希望通りに動作する様になりました。 ありがとうございました。 今後ともよろしくお願いします。
補足
御回答ありがとうございました。 初めは、#4に記載の Option Explicit Dim objIE As Object ~ Cancel = True End Sub をシートモジュールに記載し、その後を標準モジュールに記載しました。 今回、全てをシートモジュールに書き換えましたがIEがタグではなく、毎回、別のIEが起動されました。 なお、記載していませんでしたがIEのバージョンは8です。 以上、ご迷惑をかけますが、よろしくお願いします。
- watabe007
- ベストアンサー率62% (476/760)
>既に解除したのですが・・ >上手く出来ません。 Excelのセルに設定されたハイパーリンクをまとめて解除する http://www.atmarkit.co.jp/fwin2k/win2ktips/870hyperlink02/hyperlink02.html
補足
ハイパーリンクとして設定されているセルは全て解除しました。 ですが、上手くいきません。
- watabe007
- ベストアンサー率62% (476/760)
セル上のURLがハイパーリンクにならないように [ツール]-[オートコレクトのオプション]-[入力オートフォーマット]タブ □インターネットとネットワークのアドレスをハイパーリンクに変更する ↑チェックを解除してくださいね
補足
何度も申し訳ありません。 既に解除したのですが・・ 上手く出来ません。
- watabe007
- ベストアンサー率62% (476/760)
ダブルクリックでの実行がお望みなら (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
補足
私の間違いがありました。 起動はしました。 でも、複数のIEが起動されてしまいます。
- fujillin
- ベストアンサー率61% (1594/2576)
No2です。 こちらにタブブラウザの環境がないので、わからないのですが… 検索して見ると、↓のような情報がありました。 Navigate2メソッドを使用すれば、良いらしいです。 http://www.happy2-island.com/vbs/cafe02/capter00711.shtml
補足
再三、御回答いただきありがとうございました。 初歩的な質問で申し訳ありませんが いただいたサイトを確認しテストしたのですが上手く動作しません。 標準モジュールに入れたのですが間違いなのでしょうか。
- watabe007
- ベストアンサー率62% (476/760)
補足
早速の御回答ありがとうございました。 起動させることが出来ました。 ただ、IEは起動が遅く、更に、2つ、3つと同時に開こうとすると幾つもIEが起動されるため、IE以外のブラウザを使用するかタグを使用して開くことは出来ないでしょうか。 再度、申し訳ありませんが、よろしくお願いします。
補足
早速の御回答ありがとうございました。 確認させていただいたところ 複数回IEを起動しても、複数のIEが起動するのではなく、同じIEで処理されたのは確認しましたが、2回目以降は別のタグにすることは出来ないのでしょうか。 以上、よろしくお願いします。