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

いつもお世話様です。エクセル2000での名前定義に関するVBA操作で疑問がありますのでよろしくお願い申し上げます。
(o。_。)oペコッ

以下のマクロで、あるエクセルのBOOKの名前の定義をすべて書き出してみました。

Sub Names_Check()
Dim nm As Object
Set sh = ActiveWorkbook.Worksheets.Add
For Each nm In ActiveWorkbook.Names
i = i + 1
sh.Cells(i, 1) = nm.Name
sh.Cells(i, 2) = "'" & nm.RefersTo
Next
End Sub

すると、なかにはセル範囲を参照していない名前の定義がけっこう見つかりました。
それらはよく見ると
=○○○.xls!△△マクロ
のようなマクロの名前を参照していました。

そんな名前の定義はつけた覚えが無いのですが、これは何でしょうか?
なぜそのような名前の定義が出来てしまうのでしょうか?

次にセル範囲を参照していないこれらの名前定義を削除するため下記のマクロを書いてみたところ、「実行時エラー1004 その名前は正しくありません」というエラーがでてしまいます。
どう書いたら削除できるのでしょうか?(もちろん手動では削除できます。)

Sub Del_NameRefQuestion() '不明な参照の名前定義削除
Dim nm As Object
Dim mystr As String, ans As Integer
For Each nm In ActiveWorkbook.Names
If InStr(nm.RefersTo, "$") = False Then
ans = MsgBox(nm.Name & "/" & nm.RefersTo, vbYesNo + vbQuestion, "削除しますか?")
If ans = vbYes Then nm.Delete ’ここでエラー
End If
Next
MsgBox "不明参照の名前定義削除完了", , " ( ̄ー ̄)v"
End Sub

A 回答 (2件)

こんにちは。



私が、この件には以前から気がついていたことです、特に、Excel2000では、ややこしい現象が起こるようです。

"不明参照の名前定義削除完了"
のエラーは、予想した方法でやってみたら、出すことが出来ました。

以前の私の回答:

http://oshiete1.goo.ne.jp/kotaeru.php3?qid=2616426
名前を一括削除するマクロ

私は、前回を含めて、中途半端な回答をしてしまいました。

削除できないものは、名前-定義で付けられた、一種の関数式かもしれません。例えば、Ver.4マクロ関数で定義した数式とか、また、ユーザー定義関数も、そこに入り込むのかもしれません。「"不明参照の名前定義削除完了"」が出ます。

ただ、私はまだ結論的なものは出来ていません。Microsoft サポートにもなかったように思います。

ここのカテゴリの質問者の中に、この私の発言に納得するように説明をしろと強い要求されたのですが、私としても、今のところ、単にマクロでは安易には扱わないほうがよいとしているだけにとどまっています。
    • good
    • 1
この回答へのお礼

ありがとうございます。
以前のご回答も見せていただきました。
結局、手動で消すしかないと言うことなのでしょうか?

お礼日時:2008/03/25 16:34

こんばんは。



>結局、手動で消すしかないと言うことなのでしょうか?

私の知る範囲では、手動で削除するしかないように思います。
これは、他の有名な方もそう回答しています。
ただ、思い当たるすべてを試しているわけではありません。
    • good
    • 0
この回答へのお礼

やはりそういうことでしたか ( ̄ロ ̄;)!!

ありがとうございました。 

お礼日時:2008/03/26 11:16

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

このQ&Aを見た人はこんなQ&Aも見ています