[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リンクエラー』(くろ)
いつもお世話になっております。
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 >
Application.DisplayAlerts = False'★警告非表示 '処理を記述 Application.DisplayAlerts = True'★警告非表示を解除
を試すと、どうなりますか? (マリオ) 2017/03/29(水) 22:03
外部ブックを参照する入力規則は、普通設定しないと思うので、怪しいのは数式です。これらを実行しても何も問題が出そうな外部参照が見つからない場合、グラフの元データが外部参照している可能性があるので、全グラフのデータ選択を確認してみてください。
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.