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: 56862 Skopiuj do schowka 62. Jeszcze o odczytywaniu danych z zamkniętych plików
Autor Wiadomość
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Posty: 9086
Wysłany: 03-04-2017, 11:12   62. Jeszcze o odczytywaniu danych z zamkniętych plików

Problem odczytu danych z zamkniętych plików stale powraca w pytaniach użytkowników Excela.
Chciałbym zwrócić uwagę na jeszcze jeden, mniej popularny, choć również skuteczny sposób rozwiązania tego problemu. Chodzi o wykorzystanie nazw arkuszowych. Nazwy te mogą być nadawane dowolnym fragmentom arkusza, w tym również zakresom złożonym. Nie ma znaczenia, czy skoroszyt jest otwarty, czy nie. Oczywiście nazwa odnosząca się do zamkniętego skoroszytu musi zawierać ścieżkę dostępu. Gdy taka nazwa zostanie zdefiniowana można odczytać dowolny jej fragment za pomocą funkcji INDEKS. Proces nadawania nazw można zautomatyzować na przykład przez wykorzystanie obsługi zdarzenia Change.
Można na przykład wytypować 2 kolumny w arkuszu - w kolumnie A będziemy umieszczać nazwy, a obok w kolumnie B - teksty odwołań, które chcemy do tych nazw przypisać. Mogą to być formuły składające tekst z elementów, albo gotowe formuły odwołań, wtedy należy je poprzedzić apostrofem, aby pozostały w formie tekstu. Procedura obsługi zdarzenia Change będzie śledzić zmiany w kolumnie B i jeśli pojawi się tam tekst zaczynający się od znaku równości, a równocześnie obok w kolumnie A będzie tekst, który spełnia kryteria nazwy, procedura podejmie próbę utworzenia nazwy z tych danych. O powodzeniu lub niepowodzeniu będzie informował komunikat MsgBox. Procedura nie ostrzega o zmianie definicji istniejącej nazwy. W razie niepowodzenia poprzednia definicja, jeśli istniała, będzie zachowana.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Or Target.Column <> 2 Then Exit Sub
  On Error Resume Next
  If Target.Offset(, -1) = "" Then Exit Sub 
  If Left(Target, 1) = "=" Then
    Names.Add Target.Offset(, -1), Target.Value
    MsgBox "Nadanie nazwy '" & Target.Offset(, -1) & _
        IIf(Err , "' nie powiodło się", "' przebiegło pomyślnie")
  End If
End Sub
Komunikat o pomyślnym utworzeniu nazwy oznacza tylko, że nazwa została zapisana, ale nie oznacza, że lokalizacja docelowa istnieje. To można sprawdzić funkcją Dir, ale czasem chcemy sobie wcześniej przygotować odwołania do danych, które jeszcze nie istnieją.

Odczyt_nazwy.xlsm
Pobierz Plik ściągnięto 402 raz(y) 17.85 KB

Do_odczytu.xlsx
Pobierz Plik ściągnięto 387 raz(y) 9.2 KB

ID posta: 319938 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