重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。
過去の質問などを参考にして
Excel2013で、URLを一括で開くVBAを設定しました。

Sub macro1()
Dim myLnk As Range
For Each myLnk In Selection
On Error Resume Next
ActiveWorkbook.FollowHyperlink myLnk.Text
On Error GoTo 0
Next
End Sub

ただし、これだとオートフィルタで絞り込んでも
不可視セルも開かれてしまうので
可視セルを対象にすれば良いというところまでは分かりました。

Range("J1").CurrentRegion.SpecialCells(xlCellTypeVisible)

上記を組み込んでみたのですが不可視セルも開いてしまいます。

Sub macro1()
Dim myLnk As Range
Set myLnk = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each myLnk In Selection
On Error Resume Next
ActiveWorkbook.FollowHyperlink myLnk.Text
On Error GoTo 0
Next
End Sub

For Each~の前にmyLnk.Selectを追加したら
可視セルだけ開くようになったのですが
任意の選択範囲ではなく、現在表示されている表全体が
選択範囲になってしまいます。。

J列にURLが貼ってあります。
選択したJ列のセル範囲の可視セルだけを
一括で開くやり方をご教示いただけると助かりますm(_ _;)m

A 回答 (3件)

No2です



>私の頭ではうまく組み込むことができませんでした。
それなら、どこか空いているセルに対象範囲をコピペすれば良いでしょう。
フィルタで非表示になっている行はコピペの際に省かれますので、そちらを利用して処理すれば、表示/非表示を判別する必要がなくなります。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
別シートにコピペも考えていましたが
コピペしなくてもできればと思いご質問いたしました。
正しいかは別として何とか下記で動作しました。。

Sub macro1()
Dim myLnk As Range
Set myLnk = Selection.SpecialCells(xlCellTypeVisible)

If Selection.SpecialCells(xlCellTypeVisible).CountLarge > 30 Then
MsgBox "範囲未選択、もしくは対象が30以上のため開きません。"
Exit Sub
End If
myLnk.Select
For Each myLnk In Selection
On Error Resume Next
ActiveWorkbook.FollowHyperlink myLnk.Text
On Error GoTo 0
Next
End Sub

Selectすることで、可視セル範囲だけ対象に開くようになりました。
それと任意の範囲選択をしてない時にSelectすると
膨大な範囲が勝手に選択されてしまうので
事前にカウントして判断しています。

お礼日時:2019/12/25 09:15

No1です。



>Hidenプロパティは行か列指定じゃないといけないんですね。
>Rangeをどのように変えたら良いのかなど
判定したいセルに対してEntireRowプロパティを参照すれば、そのセルを含む行全体が返されます。
https://docs.microsoft.com/ja-jp/office/vba/api/ …

ってか、リンク先にほとんど全ての情報があるんだけれど・・・
    • good
    • 0
この回答へのお礼

何度も申し訳ございません。。
私の頭ではうまく組み込むことができませんでした。

お礼日時:2019/12/24 15:46

こんにちは



ご質問文にある通りを、素直に処理すればよいのではないでしょうか。

表示/非表示の状態はHiddenプロパティで判断できますので、
 『表示ならリンクをフォロー、非表示なら何もしない』
に修正すればよさそう。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございます。
Hidenプロパティは行か列指定じゃないといけないんですね。
Rangeをどのように変えたら良いのかなど
具体的なコードをいただけると助かりますm(_ _;)m

お礼日時:2019/12/24 15:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!