Inspektor dokumentów znalazł ukryte nazwy w skoroszycie. Te nazwy mogą zawierać ukryte informacje o scenariuszach dodatku Solver. Jeśli na przykład używasz dodatku Solver do uruchamiania scenariusza, może on przechowywać informacje o parametrach obliczeń i innych danych poufnych jako ukryte nazwy w skoroszycie.
Ważne: Firma Microsoft udostępnia przykłady programowania wyłącznie w celach ilustracyjnych, bez gwarancji wyrażonej lub dorozumianej. To obejmuje między innymi dorozumiane gwarancje przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że znasz język programowania, który jest demonstrowany, oraz narzędzia, które są używane do tworzenia i debugowania procedur. Inżynierowie pomocy technicznej firmy Microsoft mogą pomóc w objaśnieniu funkcjonalności określonej procedury, ale nie zmodyfikują tych przykładów w celu zapewnienia dodatkowych funkcji ani skonstruowania procedur spełniających określone wymagania.
Problem
Inspektor dokumentów nie może usunąć tych ukrytych nazw.
Zalecane rozwiązanie
Uruchom następujące makro, aby usunąć ukryte nazwy. Makro wyświetla okno komunikatu z trzema elementami: (1) czy zdefiniowana nazwa jest widoczna, czy ukryta, (2) zdefiniowana nazwa i (3) do czego odwołuje się ta nazwa (odwołanie do komórki skoroszytu). Możesz wybrać pozycję Tak lub Nie , aby usunąć lub zachować każdą zdefiniowaną nazwę.
Uwaga: Jeśli za pomocą tego makra usuniesz ukryte nazwy, dodatki (takie jak Solver) lub makra mogą nie działać zgodnie z oczekiwaniami i mogą utracić ukryte dane z nimi skojarzone. To makro wpływa również na każdą zdefiniowaną nazwę, która jest ukryta, a nie tylko te, które zostały dodane przez dodatek Solver.
Przestroga: Jeśli nazwy arkuszy zawierają spacje, podczas próby usunięcia zdefiniowanej nazwy może zostać wyświetlony komunikat o błędzie.
Usuwanie ukrytych nazw
' 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