Strona 1 z 1

[SOLVED] pobieranie danych z komórek plików zewnętrznych

: sob lip 23, 2016 7:25 pm
autor: AlbertK
Jako że to mój pierwszy post, na wstępie chciałbym gorąco powitać wszystkich użytkowników Forum.

Chcę stworzyć arkusz (nazwijmy go arkuszem zbiorczym), który będzie pobierał i wyświetlał dane zawarte w innych arkuszach (będzie to seria danych, powiedzmy że w jednej kolumnie). Dane te zamieszczone są w kilkudziesięciu innych arkuszach calc, znajdujących się w różnych miejscach na dysku. Każdy z tych plików ma dokładnie taki sam układ (i nazwy) arkuszy i komórek. Pliki te różnią się tylko nazwami, położeniem na dysku oraz zawartością samych komórek. Chciałbym aby użytkownik arkusza zbiorczego mógł, wpisując w odpowiednim polu nazwę katalogu oraz nazwę pliku (czy np. wybierając je z listy) sprawić, aby w określonej kolumnie arkusza zbiorczego pojawiły się dane zawarte w komórkach tego właśnie pliku.

Czyli np. - wybieramy w danym polu arkusza zbiorczego nazwę katalogu: SPRZEDAŻ, oraz numer pliku: G04 - a arkusz zbiorczy w tym momencie ładuje nam dane z pliku "Zestawienie.G04.ods", znajdującego pod adresem C:/DANE/SPRZEDAŻ.

Najprościej byłoby to pewnie zrobić przez odwołanie, które zamiast operować formułą np.: ='file:///C:/DANE/SPRZEDAŻ/Zestawienie.G04.ods'#Dane.A11 (która jest sztywna i zawsze odwołuje do tego samego pliku) będzie operowało adresem, w którym pojawią się zmienne. Coś w stylu ='file:///C:/DANE/[ZMIENNA-1]/Zestawienie.[ZMIENNA-2].ods'#Dane.H11 Nie wiem tylko czy coś takiego jest w Calc możliwe. Intuicja podpowiada, że rozwiązanie jest bardzo proste, ale jak na razie nie znalazłem funkcji, która za to odpowiada :)

Dzięki za pomoc.

Re: pobieranie danych z komórek różnych plików zewnętrznych

: sob lip 23, 2016 11:16 pm
autor: Husar
AlbertK pisze: Najprościej byłoby to pewnie zrobić przez odwołanie, które zamiast operować formułą np.: ='file:///C:/DANE/SPRZEDAŻ/Zestawienie.G04.ods'#Dane.A11 (która jest sztywna i zawsze odwołuje do tego samego pliku) będzie operowało adresem, w którym pojawią się zmienne. Coś w stylu ='file:///C:/DANE/[ZMIENNA-1]/Zestawienie.[ZMIENNA-2].ods'#Dane.H11 Nie wiem tylko czy coś takiego jest w Calc możliwe. Intuicja podpowiada, że rozwiązanie jest bardzo proste, ale jak na razie nie znalazłem funkcji, która za to odpowiada :)
Owszem można próbować poprzez odwołania, ale jest małe ale. Skoroszyty źródłowe podczas pobierania danych muszą być otwarte. Przy kilku skoroszytach to nie problem.
Inne rozwiązanie to makro, które by wykonywało takie kroki w pętli:
- pobranie adresu skoroszytu ze arkusza zbiorczego,
- otwarcie skoroszytu źródłowego,
- zaciągnięcie danych,
- wklejenie danych do arkusza zbiorczego,
- zamknięcie skoroszytu źródłowego,
- przejście do początku pętli lub zakończenie pętli po osiągnięciu ostatniego wiersza z adresami

Re: pobieranie danych z komórek różnych plików zewnętrznych

: sob lip 23, 2016 11:34 pm
autor: AlbertK
Z tym akurat nie mam problemu. W przypadku odwołania (bezpośredniego) do pliku zewnętrznego, arkusz po otwarciu informuje, że w pliku znajdują się łącza do innych plików i pyta czy wykonać aktualizację. Po kliknięciu na "tak" pobiera dane z arkusza źródłowego, niezależnie od tego czy arkusz ten jest otwarty czy zamknięty.

Rzecz w tym, że proste odwołanie nie załatwia problemu, bo zawsze odwołuje się do tego samego arkusza, a nie wiem czy da się skonstruować odwołanie oparte na zmiennych.

Pozdrawiam

Re: pobieranie danych z komórek różnych plików zewnętrznych

: sob lip 23, 2016 11:49 pm
autor: Husar
Skoro tak, to jeśli ZMIENNA-1 jest w A1 a ZMIENNA-2 jest w B1 to

Kod: Zaznacz cały

='file:///C:/DANE/"&A1&"/Zestawienie."&B1&".ods'#Dane.H11

Re: pobieranie danych z komórek różnych plików zewnętrznych

: ndz lip 24, 2016 12:24 am
autor: AlbertK
Dokładnie o coś takiego mi chodzi :)

Rzecz w tym, że z nieznanych mi przyczyn rozwiązanie nie działa. Po zastąpieniu części adresu zmienną opisaną jako ""&A1&" i wpisaniu do komórki A1 nazwy właściwego katalogu, dostaję jako wynik #REF!, a przy otwieraniu pliku komunikat:

|Następującego pliku zewnętrznego nie można było wczytać. Dane powiązane z tego pliku nie są aktualizowane.
file:///C:/Users/asus/"&A1&"/probne zrodlo.ods"

Prawdopodbnie nie ma błędu w formacie danych komórki A1 (jest tekstowa). Kiedy adres z w/w zmienną wezmę w cudzysłów ("file:///C:/Users/asus/"&A1&"/probne zrodlo.ods"), w komórce pojawia się tekst odpowiadający dokładnie - litera w literę - adresowi zewnętrznego pliku (z już uzupełnionymi danymi o nazwę katalogu znajdującego się w zmiennej).

Re: pobieranie danych z komórek różnych plików zewnętrznych

: ndz lip 24, 2016 2:11 am
autor: Jan_J
Czytałem wątek i coś mnie tknęło, że to nie powinno działać. Ale tknęło zbyt słabo, żeby sprawdzić albo spytać.

Problem w tym, że operacja & odnosi się do tekstu, do danych typu tekstowego. Zaś adres zawarty między ' a ' tekstem nie jest.

Do zamiany tekstu na adres służy funkcja INDIRECT, czyli ADR.POŚR. Coś jak tu: https://forum.openoffice.org/pl/forum/v ... 64&p=14974

Re: pobieranie danych z komórek różnych plików zewnętrznych

: pn lip 25, 2016 10:06 pm
autor: AlbertK
Funkcja ADR.POŚR rozwiązała problem. Mam tylko nadzieję, że przy pobieraniu danych z 80 plików arkusze się nie wysypią :)

Wielkie dzięki za pomoc !

Re: [SOLVED] pobieranie danych z komórek plików zewnętrznych

: śr lip 27, 2016 7:57 pm
autor: Husar
Mój błąd. Sorry.

Re: pobieranie danych z komórek różnych plików zewnętrznych

: pt sty 13, 2017 8:21 pm
autor: Daniel_I
AlbertK pisze:Funkcja ADR.POŚR rozwiązała problem. Mam tylko nadzieję, że przy pobieraniu danych z 80 plików arkusze się nie wysypią :)

Wielkie dzięki za pomoc !
AlbertK
Ogromna prośba. Czy mógłbyś wkleić całą formułę z wykorzystaniem funkcji ADR.POŚR która u Ciebie zadziałała. Mam podobny problem do rozwiązania
i nie mogę sobie poradzić z wykorzystanie tej funkcji.
Dzięki