[SOLVED] pobieranie danych z komórek plików zewnętrznych
[SOLVED] pobieranie danych z komórek plików zewnętrznych
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.
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.
Ostatnio zmieniony pn lip 25, 2016 10:08 pm przez AlbertK, łącznie zmieniany 1 raz.
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Re: pobieranie danych z komórek różnych plików zewnętrznych
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.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
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
Pozdrawiam
Roman
Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
Roman
Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
Re: pobieranie danych z komórek różnych plików zewnętrznych
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
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
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Re: pobieranie danych z komórek różnych plików zewnętrznych
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
Pozdrawiam
Roman
Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
Roman
Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
Re: pobieranie danych z komórek różnych plików zewnętrznych
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).
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).
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Re: pobieranie danych z komórek różnych plików zewnętrznych
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
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
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: pobieranie danych z komórek różnych plików zewnętrznych
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 !
Wielkie dzięki za pomoc !
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Re: [SOLVED] pobieranie danych z komórek plików zewnętrznych
Mój błąd. Sorry.
Pozdrawiam
Roman
Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
Roman
Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
Re: pobieranie danych z komórek różnych plików zewnętrznych
AlbertKAlbertK 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 !
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
LibreOffice 4 na WINDOWS 7