エクセルVBAについて質問です。


エクセルで指定した範囲のURLを一気に開くプログラムを作成したいと考えています。

行いたいことは列BVのURLをクリックすると指定していた 行範囲(列BW~列CG) のセルのURLを全部一気に開くということです。


エクセルの環境は以下になります。

http://oskuni7.sakura.ne.jp/hatena/question10/question10.htm

このようなプログラム(マクロ)を組むことは可能でしょうか。
またマクロ以外の方法で簡単に出来る場合はお手数をおかけしますがよろしくお願いいたします。


※ブラウザはFireFoxを使用しております。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/01/13 12:05:10
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント60pt

FireFoxが既定のプラウザとして設定されているならば、シートのSelectionChangeイベントに

以下のコードでBV列を選択するとCG列までに設定されたリンクを開きます。

ただし、既定のプラウザがIEとか別のプラウザならばFireFoxで開くためには別の手段が必要になります。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column <> 74 Or Target.Value = "" Then Exit Sub
    Dim r As Long
    Dim i As Integer
    r = Target.Row
    For i = 74 To 85
        If Cells(r, i).Hyperlinks.Count > 0 Then
            Cells(r, i).Hyperlinks(1).Follow NewWindow:=False
        End If
    Next i
End Sub

http://q.hatena.ne.jp/

id:aiomock

ご回答ありがとうございます。

プログラムを実行させていただきました。

後、追加で大変お手数をおかけしますが、

今後選択範囲を変更する場合ですが、このプログラムですとどこをいじればよろしいでしょうか?

For i = 74 To 85

この74と85の数字の意味が少しわからないのですがこれは列BVからの選択範囲を示しているのでしょうか?

この範囲をいじればもっと多いURLも開くことができますか?

お手数をおかけし申し訳ありませんがお時間がありましたらよろしくお願いいたします。

2009/01/13 11:44:35
  • id:SALINGER
    74~85というのはBV列からCG列を意味します。
    左端から74列目がBV列ということで、そのまま74~86にすればCH列までにできます。
  • id:SALINGER
    ちなみに2行目の
    Target.Column <> 74
    は、74列目(BV列)以外は抜けるということで、
    クリックするセルを変更するときはここの数値を変更します。
  • id:aiomock
    SALINGER さん 

    次回変更した際の選択範囲もこれで実行できそうです。

    本当にありがとうございます。

  • id:aiomock
    VLOOKUP関数でリンクを読み込んだ形で処理を行ったのですが、

    実行したところ、URLを開けませんでした。

    ですのでVLOOKUP関数でリンクを読み込み、その後コピーアンドペーストをして値のみを残す。その後セルをダブルクリックしてURLを読み込む状況にする方法を取っているのですが少し面倒であります。

    URLがリンク指定にされていない状況でもリンクを開ける方法はないでしょうか。

    お手数をおかけしますがよろしくお願いいたします。

    勝手に質問を終了させて申し訳ありませんがもしプログラムで可能でしたらよろしくお願いいたします。


  • id:s-n-k
    VLOOKUP関数でリンクを読み込んだ形 というのがどういう状況か分かりませんが、VLOOKUP 関数で URL の文字列が表示されているのであれば VLOOKUP 関数を HYPERLINK 関数で囲んでみてはどうでしょう。

    =HYPERLINK(VLOOKUP(…))

    のような感じです。
  • id:aiomock
    s-n-k さん

    ご回答ありがとうございます。

    HYPERLINK指定できました。

    実行してみたのですが、=で持ってきたものはプログラム適応されませんでした。

    どうにかして実行してみたいのですがどうも無理そうです。
  • id:SALINGER
    HYPERLINK関数でいけるかなと思ってたのですが、試してみると駄目みたいですね。
    それでコードの方を改良してみました。
    リンクが無ければA列の最終行に擬似的にリンクを作る方法です。
    >>
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column <> 74 Or Target.Value = "" Then Exit Sub
    Dim r As Long
    Dim i As Integer
    r = Target.Row
    For i = 74 To 85
    If Cells(r, i).Hyperlinks.Count > 0 Then
    Cells(r, i).Hyperlinks(1).Follow NewWindow:=False
    Else
    If Cells(r, i).Value <> "" Then
    ActiveSheet.Hyperlinks.Add(Anchor:=Range("A65536"), _
    Address:=Cells(r, i).Value).Follow
    End If
    End If
    Next i
    Range("A65536").Value = ""
    End Sub
    <<
  • id:aiomock
    SALINGER さん

    プログラム完璧に実行されました。

    真にありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません