ドキュメント検査で、ブックに非表示の名前が見つかりました。 これらの名前は、ソルバー シナリオに関する非表示の情報を格納する場合があります。 たとえば、ソルバー アドインを使用してシナリオを実行する場合、計算パラメーターとその他の機密性の高いデータに関する情報を、非表示の名前を付けてブック内に保存することがあります。
重要: Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。
問題
ドキュメント検査では、これらの非表示の名前を削除できません。
推奨される解決策
次のマクロを実行して、非表示の名前を削除します。 マクロには、(1) 定義された名前が表示されるか非表示であるか、(2) 定義された名前、(3) その名前が参照するもの (ブック セル参照) の 3 つの項目が一覧表示されるメッセージ ボックスが表示されます。 [ はい ] または [いいえ ] を選択して、定義された各名前を削除するか、保持することができます。
注: このマクロを使用して非表示の名前を削除する場合、アドイン (ソルバーなど) またはマクロが期待どおりに動作しないことがあり、これらに関連する非表示のデータが失われる可能性があります。 このマクロは、ソルバーによって追加された名前だけでなく、非表示として定義された名前にも影響します。
注意: シート名にスペースが含まれている場合は、定義された名前を削除しようとするとエラーが発生する可能性があります。
非表示の名前を削除する
' Module to remove all hidden names on active workbook
Sub Remove_Hidden_Names()
' Dimension variables.
Dim xName As Variant
Dim Result As Variant
Dim Vis As Variant
' Loop once for each name in the workbook.
For Each xName In ActiveWorkbook.Names
'If a name is not visible (it is hidden)...
If xName.Visible = True Then
Vis = "Visible"
Else
Vis = "Hidden"
End If
' ...ask whether or not to delete the name.
Result = MsgBox(prompt:="Delete " & Vis & " Name " & _
Chr(10) & xName.Name & "?" & Chr(10) & _
"Which refers to: " & Chr(10) & xName.RefersTo, _
Buttons:=vbYesNo)
' If the result is true, then delete the name.
If Result = vbYes Then xName.Delete
' Loop to the next name.
Next xName
End Sub