ここから本文です

vba ハイパーリンクの取得、挿入。お世話になります。

exc********さん

2017/7/2609:41:11

vba ハイパーリンクの取得、挿入。お世話になります。

あるフォルダ内のエクセルデータへのハイパーリンクの取得挿入についてです。

D列:リンク先のブック名が書いてある
E列:ハイパーリンクが挿入されている


D3=ブック名1 E3=ブック名1のリンク
D4=ブック名2 E4=ブック名2のリンク

つまり、E列のセルをクリックしたら、D列に書いてあるブックが開きます

この時に、誤ってE3のセルをE4へコピーしてしまいました。(実際は数カ所同様の誤りをしています。)
すると、当然、E4のリンクはE3のリンクに変わります。そこでリンクを正しく直す為に、以下のコードを書きました。

すると、E4のリンクは正しいリンク(D4のブックへのリンク)に直ったのですが、何故かE3のリンクも「D4のブックへのリンク」に変わってしまいます。
何かコードに問題がありますでしょうか?よろしくお願いします!


Sub アクティブページのハイパーリンクの取得及び変更()
Dim URL, 新URL As String
Dim i As Long
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.ActiveSheet

For i = 3 To ws.Cells(ws.Rows.Count, 5).End(xlUp).Row

If ws.Cells(i, 5).Hyperlinks.Count = 0 Then

Else
URL = ws.Cells(i, 5).Hyperlinks(1).Address
ws.Cells(i, 6) = URL
新URL = Left(URL, InStrRev(URL, "\")) & ws.Cells(i, 4) & ".xlsm"
ws.Cells(i, 7) = 新URL
ws.Cells(i, 5).Hyperlinks(1).Address = 新URL
End If
Next i
End If

因みに確認の為、F,G列にそれぞれ、URL,新URLを書き出しています!

閲覧数:
292
回答数:
1

違反報告

ベストアンサーに選ばれた回答

por********さん

2017/7/2908:53:16

こんにちは。
If ws.Cells(i, 5).Hyperlinks.Count = 0 Then

Else

ですよね、つまり、「なにかあったら、」という意味ですよ。

この場合「間違った設定があっても、何もしないで次」のことになります。

リンクを調べなくていい条件を変更してください。

もし、設定を全部差し替えていいということなら、「リンクを全部初期化」して、差し替える、というコードにしたらいいです

  • 質問者

    exc********さん

    2017/7/2910:15:03

    ありがとうございます!
    ifの部分ですが、ハイパーリンクを設定していない行を飛ばすという意味で記述しました。
    E列の複数行に、ハイパーリンクが設定されてされていない行があるからです。
    今回の質問の意図を考えると、ifの部分は質問内容に関与していないので、消しておくべきでした。大変申し訳ありません。

    というのも、例えば
    D1=ブック名1
    D2=ブック名2
    E1=ブック名1のリンク
    E2=ブック名2のリンク
    として、
    E1をE2へコピーします。この時、E1=E2=ブック1のリンク
    になります。
    そして、質問コードを「if文がない状態」で実行すると、
    E2=ブック2のリンク
    E1=ブック2のリンク(※)
    となります。
    この(※)の部分ですが、何故E1のリンクが書き換わるのかが、よく分かりません。

    質問内容が精査出来てなく大変申し訳ありませんでした。

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2017/7/30 19:55:35

色々ありがとうございました!
非常に勉強になりました!
また機会がありましたらご指導下さい!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる