Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 38465 Skopiuj do schowka 54. Ukryta przestrzeń nazw
Autor Wiadomość
Kapol 
Excel Expert


Posty: 904
Wysłany: 26-10-2013, 09:50   54. Ukryta przestrzeń nazw

Informacje zaczerpnięte z: http://www.cpearson.com/excel/hidden.htm

Ukryta przestrzeń nazw (hidden name space)

Jak wszyscy wiedzą, w Excelu można definiować, edytować i usuwać nazwy za pomocą Menedżera nazw, a także z poziomu VBA. Z pomocą programowania istnieje możliwość ukrywania/odkrywania zdefiniowanych wcześniej nazw w celu ustalenia, czy będą one widoczne w oknie Menedżera nazw.

W Excelu mamy do czynienia z jeszcze jedną przestrzenią nazw, która działa nie na poziomie skoroszytu, ale aplikacji. Przede wszystkim jest to równoznaczne z tym, że długość „życia” takiej nazwy trwa od jej utworzenia aż do zamknięcia instancji Excela. W praktyce oznacza to, że jeżeli otworzymy Zeszyt1.xlsm i stworzymy taką nazwę, a następnie zamkniemy ten skoroszyt i otworzymy nowy - Zeszyt2.xlsm, ta nazwa wciąż będzie znajdowała się w przestrzeni ukrytych nazw i będzie dostępna dla procedur VBA w Zeszyt2.xlsm.

Przejdźmy do sedna – w jaki sposób posługiwać się takimi nazwami? Aby tego dokonać, skorzystamy z metody Application.ExecuteExcel4Macro oraz z funkcji SET.NAME.

Funkcję SET.NAME wykorzystamy w dwóch przypadkach: do utworzenia nowej nazwy oraz do jej usunięcia (a także – pośrednio – do zmodyfikowania jej wartości). Aby utworzyć nową nazwę i umieścić ją w naszej przestrzeni, do funkcji SET.NAME należy przekazać dwa parametry: nazwę definiowanej przez nas nazwy oraz jej wartość.
Kod:
Application.ExecuteExcel4Macro "SET.NAME(""moja_nazwa"",5)"

W przypadku pierwszego z nich należy pamiętać, aby nie używać niedozwolonych znaków:
Kod:
/ - : ; ! @ # $ % ^ & *( ) + = , < >

W celu usunięcia nazwy wykorzystamy tę samą funkcję, ale przekażemy do niej jedynie pierwszy argument.
Kod:
Application.ExecuteExcel4Macro "SET.NAME(""moja_nazwa"")"

Aby zmienić wartość nazwy wystarczy ponownie wywołać jej utworzenie, podając nową wartość drugiego parametru. Poniżej krótki kod łączący wszystkie wspomniane wcześniej elementy.
Kod:
Sub TestUkrytychNazw()
   
    With Application
        .ExecuteExcel4Macro "SET.NAME(""moja_nazwa"",5)"
        Debug.Print .ExecuteExcel4Macro("moja_nazwa")
        .ExecuteExcel4Macro "SET.NAME(""moja_nazwa"",4)"
        Debug.Print .ExecuteExcel4Macro("moja_nazwa")
        .ExecuteExcel4Macro "SET.NAME(""moja_nazwa"")"
        Debug.Print .ExecuteExcel4Macro("moja_nazwa")
    End With
   
End Sub


Nazwa znajdująca się w naszej ukrytej przestrzeni nie zostanie odnaleziona przez VBA w kolekcji Application.Names. Niezbędnym jest więc zapamiętanie jak się ona nazywa, aby nie stracić możliwości odwołania się do niej.
_________________
BIBLE - Basic Instructions Before Leaving Earth
ID posta: 208632 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona uĹźywa plikĂłw cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przegl�darce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe