• ベストアンサー

エクセルVBAでハイパーリンクについて教えてください

A列のA2以降に各ファイルのフルパスがあります。 フォルダを移動したり、削除したりでクリックしても「指定したファイルを開くことができません」となります。 これをブックを開くと同時に実在するか調べて、リンク切れであれば色を付けると同時に「赤色文字はリンク切れです。削除しますか?」とメッセージして、「はい・いいえ」で判断するようなコードを教えていただけないでしょうか。そもそもURLなら聞いたことがあるのですが、フォルダやファイルの有無や名前の差異を調べて・・・というのができることなのかわからないのですが・・・

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

再度の登場、onlyromです。 VBAのコードということでしたので、 当然ながら少々の修正であればできるだろうとの判断でのコードでした。 ただ、幾らなんでも >リンク切れしていないフルパスも「リンク切れです」とのメッセージになります これはありえません。 が、それを言っても詮無い事ゆえ、本題。 (前提条件) ●フルパスは、 A列に入力されてる ●フルパスは、 C:\任意フォルダ\売上.xls のような形で入力されいる もちろん、任意フォルダーはあってもなくてもOK。 上記を確認のうえちょこと修正した以下のコードを実行。 '----------------------------------------------------  Sub Auto_Open()  Dim R As Long  Dim myFile  Dim Msg  Sheets("Sheet1").Select  For R = 1 To Cells(Rows.Count, "A").End(xlUp).Row   If InStr(Cells(R, "A"), "\") > 0 Then    myFile = Dir(Cells(R, "A").Value)    If myFile = "" Then     Cells(R, "A").Interior.ColorIndex = 3     Msg = MsgBox(Cells(R, "A").Value & " は無い、リンク解除する?", vbYesNo, "確認")     If Msg = vbYes Then      Cells(R, "A").Hyperlinks.Delete     End If    End If   End If  Next R  MsgBox "リンク切れチェック終了" End Sub '---------------------------------------------- 上記コードで動作しないようなら、実際のデータを提示してくだされ。 それから、最初の質問では、A2以降にフルパスとなっているが、補足ではA3以降となっている。 提示したコードではそれは関係ないのですが、場合によっては関係することがあるので、 質問をするときは何度も読み返して投稿した方がいいでしょう。 以上。  

newme
質問者

お礼

ふたたびありがとうございました。快適に動作します。このようなコードつくれるようになりたいです。いろいろ教えてくださりありがとうございました。

その他の回答 (1)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

質問の場合はファイルの有無を調べればいいから。 例えば、Sheet1 の A列1行目からフルパスがあるとして。   標準モジュールに以下のコードを。 '-------------------------------------------- Sub Auto_Open()  Dim R As Long  Dim myFile  Dim Msg    Sheets("Sheet1").Select  For R = 1 To Cells(Rows.Count, "A").End(xlUp).Row    myFile = Dir(Cells(R, "A").Value)    If myFile = "" Then      Cells(R, "A").Interior.ColorIndex = 3      Msg = MsgBox(Cells(R, "A").Value & " は無い、リンク解除する?", vbYesNo, "確認")      If Msg = vbYes Then      Cells(R, "A").Hyperlinks.Delete      End If    End If  Next R  MsgBox "リンク切れチェック終了" End Sub '---------------------------------------------------   (注意) プロシージャー名を Auto_Open にするとブックを開いたときに ここに書かれたコードが実行されるので名前は絶対に変更しないこと。 以上。  

newme
質問者

補足

onlyromさんありがとうございました。こうやってコード化できるのってすごいなぁと思います♪ 使わせていただいたところ、リンク切れしていないフルパスも「リンク切れです」とのメッセージになります。私のシート上の設定が悪いのかもしれません。今A1の見出しにはオートシェイプで「ハイパーリンク」と入れてあります。つまり文字は入力されていません。A2は都合上空白です。ハイパーリンク化されているフルパス、ハイパーリンク化されていないフルパスはA3以降にあります。なにかコードに邪魔しているでしょうか?

関連するQ&A