エクセルVBA_数式内のリンクファイルがあるか確認

自分用のメモ書きです。
A1セルに他ファイルのリンクが入った数式がある場合、そのリンクのファイルがあるかを判断するコードをChatGPTに書いてもらいました。
数式例は「='C:\hogehoge\soresore\[計画表.xlsm]Sheet2'!B1」です。

Sub CheckLink()
    Dim cell As Range
    Dim formulaText As String
    Dim startPos As Long, endPos As Long
    Dim filePath As String

    ' チェックするセルを指定(例:セルA1)
    Set cell = Range("A1")
    
    ' セルの数式を取得
    formulaText = cell.Formula
    
    ' 数式内に外部ファイルのパスが含まれている場合を確認
    startPos = InStr(formulaText, "'")
    If startPos > 0 Then
        ' ファイルパスの開始位置を取得
        endPos = InStr(startPos + 1, formulaText, "]")
        If endPos > 0 Then
            ' パスを抽出し、不要な「[」を削除
            filePath = Mid(formulaText, startPos + 1, endPos - startPos - 1)
            filePath = Replace(filePath, "[", "")
            
            ' ファイルの存在を確認
            If Dir(filePath) = "" Then
                ' ファイルが存在しない場合
                MsgBox "ファイルがありません: " & filePath, vbExclamation
            Else
                ' ファイルが存在する場合
                MsgBox "ファイルは存在します: " & filePath, vbInformation
            End If
        Else
            MsgBox "ファイルパスが正しく抽出できませんでした。", vbExclamation
        End If
    Else
        MsgBox "外部ファイルへのリンクは見つかりませんでした。", vbExclamation
    End If
End Sub

 

記事は以上になります。
お目通しいただき、ありがとうございます。

おすすめの記事