[[20170329190604]] 『リンクエラー』(くろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リンクエラー』(くろ)

いつもお世話になっております。
CODEという名前のエクセルブックのデータを使用して名前の定義をしてます。
マクロブックを開いた時にCODEブックを開きたいです。
全てのデータは同じUSBメモリー内に保存されてます。
保存場所が同じフォルダ内の場合と一つ前のフォルダの場合があります。
(複数のマクロブックで同じデータで名前の定義を使用してます。)

以下のマクロをマクロブックに入力してます。
F8でテストするとエラーは出ないのですが、
実際にマクロブックを開くと
「このブックには、安全でない可能性のある外部ソースへのリンクが1つ以上含まれています。
リンクを信頼できる場合、リンクを更新して最新データを取り込みます。信頼できない場合は、データをそのまま手元で処理して
かまいません。」
と出るので「更新する」選択

次に
「ブック内の一部のリンクはすぐに更新できません。
値を更新せずにそのままにするか、間違っていると思われるリンクを編集してください」
と出るので「続行」選択

そうするとCODEブックは開いて名前の定義のデータも使用はできるのですが
毎回エラーが出るので何とかしたいです。

ちなみにデータタブのリンクの編集の状態の確認は「リンク元は開かれています」
数式タブの名前の管理の値や参照範囲にエラーはないです。

ご教授お願いします。

Private Sub Workbook_Open()

    Dim strPath As String
    Dim xlsxBook As Workbook
    Dim must As Boolean

    Application.EnableEvents = False
    Application.ScreenUpdating = False

    must = True

        If Dir(ThisWorkbook.Path & "\CODE.xlsx") <> "" Then
            strPath = ThisWorkbook.Path & "\CODE.xlsx"
        ElseIf Dir(Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1) & "\CODE.xlsx") <> "" Then
            strPath = Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1) & "\CODE.xlsx"
        Else
            Exit Sub
        End If

        '【CODE.xlsxが開いているかどうか確認】
        For Each xlsxBook In Workbooks
            If xlsxBook.Name = "CODE.xlsx" Then
                must = False
                Exit For
            End If
        Next

        If must Then
            Workbooks.Open FileName:=strPath, ReadOnly:=True
            ActiveWindow.Visible = False
        End If

        ThisWorkbook.Activate

        With Sheets("一覧表")
            'テーブルの下のB列セルを選択
            Application.Goto .Cells(.ListObjects("一覧リスト").ListRows.Count + 2, "B")
        End With

    Application.EnableEvents = True
    Application.ScreenUpdating = True

End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


https://www.moug.net/tech/exvba/0150081.html

 Application.DisplayAlerts = False'★警告非表示
 '処理を記述
 Application.DisplayAlerts = True'★警告非表示を解除

 を試すと、どうなりますか?
(マリオ) 2017/03/29(水) 22:03

以下のマクロ2つを標準モジュールにでも貼り付けて、実行してみてください。実行後に結果シートが追加されるので、C列に見慣れないフォルダ名等が無いか確認してみてください。
(入力規則もセル毎に表示してしまっていて冗長ですが、とりあえず問題があるかどうかは判ると思います)

外部ブックを参照する入力規則は、普通設定しないと思うので、怪しいのは数式です。これらを実行しても何も問題が出そうな外部参照が見つからない場合、グラフの元データが外部参照している可能性があるので、全グラフのデータ選択を確認してみてください。

 Sub 入力規則チェック()
    Dim wk As Worksheet
    Dim R As Range
    Dim i As Long
    Dim iw As Long
    Dim iR As Long
    Dim iErr As Long

    Set wk = Sheets.Add(after:=Sheets(Sheets.Count))
    wk.Name = wk.Name & "_入力規則チェック結果"
    wk.Cells.NumberFormatLocal = "@"
    wk.Cells.Font.Size = 9

    For i = 1 To Sheets.Count
        With Sheets(i)
            Err.Clear
            On Error Resume Next
            iw = .Cells.SpecialCells(xlCellTypeAllValidation).Count
            iErr = Err.Number
            On Error GoTo 0
            If iErr = 0 Then
                For Each R In .Cells.SpecialCells(xlCellTypeAllValidation)
                    If R.Validation.Formula1 <> "" Then
                        iR = iR + 1
                        wk.Cells(iR, "A").Value = .Name
                        wk.Cells(iR, "B").Value = R.Address(0, 0)
                        wk.Cells(iR, "C").Value = R.Validation.Formula1
                    End If
                Next R
            End If
        End With
    Next i

    wk.Columns("A:C").AutoFit
    wk.Activate
    MsgBox "入力規則チェック終了", vbInformation, "終了"
 End Sub

 Sub 数式チェック()
    Dim wk As Worksheet
    Dim R As Range
    Dim i As Long
    Dim iw As Long
    Dim iR As Long
    Dim iErr As Long

    Set wk = Sheets.Add(after:=Sheets(Sheets.Count))
    wk.Name = wk.Name & "_数式チェック結果"
    wk.Cells.Delete
    wk.Cells.NumberFormatLocal = "@"
    wk.Cells.Font.Size = 9

    For i = 1 To Sheets.Count
        With Sheets(i)
            Err.Clear
            On Error Resume Next
            iw = .Cells.SpecialCells(xlCellTypeFormulas).Count
            iErr = Err.Number
            On Error GoTo 0
            If iErr = 0 Then
                For Each R In .Cells.SpecialCells(xlCellTypeFormulas)
                    If R.Formula <> "" Then
                        iR = iR + 1
                        wk.Cells(iR, "A").Value = .Name
                        wk.Cells(iR, "B").Value = R.Address(0, 0)
                        wk.Cells(iR, "C").Value = R.Formula
                    End If
                Next R
            End If
        End With
    Next i

    wk.Columns("A:C").AutoFit
    wk.Activate
    MsgBox "数式チェック終了", vbInformation, "終了"
 End Sub
(???) 2017/03/30(木) 11:21

真っ先に確認すべき箇所を書き忘れました。
「数式」−「名前の管理」で、名前定義の不正な外部参照が無いか確認してみてください。これはマクロを使わずとも、一覧表示されます。

それと、正しい外部参照がある場合、参照先のブックを先に開いていますか? マクロブックだけ開いて実行しているなら、メッセージ表示されて当然かと思います。
(???) 2017/03/30(木) 11:35


マリオさん

返事が遅くなってすいません。
理由は不明なのですが、今日開いてみたらエラーなく開けました。
参考URLありがとうございました。
(くろ) 2017/03/30(木) 19:16


???さん

いつもお世話になっております。
返事遅くなってすいません。
マクロまで作ってもらって申し訳ないのですが
本日エラー無く開けました。
お騒がせしました。
ありがとうございました。
(くろ) 2017/03/30(木) 19:19


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.