プロが教える店舗&オフィスのセキュリティ対策術

「開いているブックには他のファイルへの自動リンクが設定されています。このブックを更新し、他のブックへの変更を反映しますか」といったメッセージが表示されますが、リンクを設定した記憶はありません。編集メニューでリンク先を確認するとすでにリンク先のエクセルファイルは削除済になっています。「編集」「検索」ですでになくなっているファイル名を全てのシートで検索しても「見つかりません」となってしまいます。質問No.1322325 05-04-10 回答者ja7awuさんのマクロでもリンク解除できませんでした。解除方法をご存知の方は教えてください。

A 回答 (6件)

セルには目安になるような文字をいれて新規のファイルを作成して、


リンク先に指定されているフォルダに保存します。
その後、修正すべきファイルを開けば、リンク設定されているところに、
目安とした文字が出てきますので、その部分を修正して「編集」にて
リンク先が消えた事を確認して保存します。
新規に作成したファイルは不要となるので、削除しておしまいです。

この回答への補足

ご連絡遅くなってすみません。リンク先に指定されているフォルダに同様のエクセルファイルを作成してA1セルに「@@@」と入力してみましたが、どこにも「@@@」は表示されませんでした。リンクを開くでは新しいファイルを認識しています。エクセルは2000です。

補足日時:2005/05/15 22:53
    • good
    • 0

no1です。


書き漏らしました。
新規のファイル名は当然リンクに指定されているファイル名です。
複数のリンク先があれば同様に複数のファイルを作る必要が、あります。
    • good
    • 0

>質問No.1322325 05-04-10 回答者ja7awuさんのマクロでもリンク解除できませんでした。



これは、検索で見つかる場合には有効です。
今回のように検索しても見つからない場合は、リンクを削除できません。

どこにもリンクが無い場合、[編集]-[リンクの設定][リンク元の変更]でリンク先のブック名を開いているブックに変更すると消えるはずです。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=68598 …

この回答への補足

ご連絡遅くなってすみません。「ブック名を開いているブックに変更する」を実行しようとすると、「数式に不正な外部参照が含まれています。パス、ブック、範囲名、またはセル参照が正しいがどうか確認し、再度実行してみてください。」となってしまいました。
エクセル2000を使用しています。

補足日時:2005/05/15 22:49
    • good
    • 3

編集→リンクの設定→リンクの解除 で出来ませんか?


もし出来ないとすると「名前」というやつが引っかかってるかもしれません。
挿入→名前→定義 で見て、訳のわからないものがあったら削除してみてください。

この回答への補足

ご連絡遅くなってすみません。私のエクセルは2000なので「リンクの解除」はありません。定義でわけのわからないものを削除ということですが、ここには何か表示されているのですか?また、リンクに表示されているようなものはありませんでした。

補足日時:2005/05/15 22:34
    • good
    • 6

このようなことを書くのは心苦しいのですが、


ja7awu さんの
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1359989
の#2 には、
 Set Rng = Sh.Cells.Find(".xls]")
としかありません。これは、現在設定されている、検索オプションのままで使うという設定です。検索が値に設定されていたら、見つかりません。通常は、すべて、Findメソッドのオプションをマクロに入れなくてはならなかったはずですが……。

とりあえず、ダメもとで、こちらのマクロもためしてみてください。ダメだったら、他に考えます。

'<標準モジュール>に登録してから、ReferenceFormulaSearch を実行してください。
'------------------------------------------
Private i As Long
Sub RefrenceFormulaSearch()
Dim wsh As Worksheet
Dim j As Long
 For Each wsh In ActiveWorkbook.Worksheets
  Call SearchRefFormula(wsh)
  Call SearchRefShapes(wsh)
  With ActiveWorkbook
  For j = 1 To .Names.Count
  If InStr(.Names(j).RefersTo, ".xls]") Then
   .Names(j).Delete
   i = i + 1
  End If
Next j
End With
 Next wsh
 MsgBox i & " 個処理しました。"
End Sub
Private Sub SearchRefFormula(ByVal wsh As Worksheet)
Dim myFirstAdd As String
Dim c As Range
Const myFind As String = ".xls]"
  With wsh.UsedRange
   Set c = .Find(myFind, LookIn:=xlFormulas, LookAt:=xlPart)
  If Not c Is Nothing Then
   myFirstAdd = c.Address
   Do
    c.Value = c.Value
    i = i + 1
    Set c = .FindNext(c)
   Loop Until c Is Nothing
  End If
  End With
End Sub
Private Sub SearchRefShapes(ByVal wsh As Worksheet)
 Dim j As Long
 With wsh
  For j = 1 To .Shapes.Count
   With .Shapes(j)
     If .DrawingObject.Formula <> Empty Then
      .DrawingObject.Formula = Empty
      i = i + 1
     End If
   End With
  Next j
 End With
End Sub

'------------------------------------------

この回答への補足

連絡遅くなってすみません。まず私はWin2000、エクセル2000を使用しています。上記に「<標準モジュール>に登録してから、ReferenceFormulaSearch を実行してください。」とありますがよくわかりません。「コードの表示」を指定して「Private i As Long」以下をコピーして貼り付け、コード内で「F5」キーを押すと「実行時エラー'438'オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となってしまいました。また別のPC(サーバ)のエクセル2003でファイルを開くとリンクのメッセージは表示されなくなります。

補足日時:2005/05/15 22:39
    • good
    • 4

なかなかうまくいかないようですね・・・。



私の場合、検索でも見つからなかったので、コピーしたブックを使って、シートを一枚ずつ削除(または、全てクリア)し保存・開く、を繰り返して参照のあるシートを特定し、該当シートが見つかったら、転記された可能性がある式の部分削除を削除しながら、幽霊の存在を探して、式の入ったセル(範囲)を特定してから、元のシートの式を修正しました。

この場合、どのセルにも他のブックへのリンクは設定されていませんでしたが、エクセルの内部に変な情報が残っていたのが原因かと思います。

どうしてもだめなら、上記のように不正なセルを特定して削除するしか無いと思います。
    • good
    • 12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!