Dynamiczny rozmiar importowanej tablicy

Użytkowanie edytora dokumentów
cemik1
Posty: 18
Rejestracja: czw lip 31, 2014 11:08 am

Dynamiczny rozmiar importowanej tablicy

Post autor: cemik1 »

Wracam z tematem, o którym pisałem już jakiś czas temu. Mam w Calc tablicę, którą chciałbym zaimportować do Writera. Problemem jest to, że może ona mieć różny rozmiar.

1.Czy możliwa jest dynamiczna zmiana importowanego zakresu? Na przykład w zależności od zawartości komórek Wiersz/Kolumna? Jeżeli mógłby ktoś podpowiedzieć jakie łącze tu zastosować i jakim sposobem (makrem) je modyfikować.

Na przykład mamy tabelę i łącze DDE do niej:
calc3.jpg
a po zmianie rozmiaru tabeli w arkuszu kalkulacyjnym powinna się ona też zaktualizować (możliwie automatycznie lub po uruchomieniu makra) w pliku tekstowym
calc4.jpg
2. Dla zastosowanego łącza DDE trzeba podawać adres pliku z pełną ścieżką dostępu. Jest to niewygodne przy przenoszeniu plików do innych katalogów czy na inne komputery. Czy można ustawić tą ścieżkę ze względnym adresem (na przykład by brany był plik o danej nazwie z bieżącego katalogu)? Oczywiście tu makro też wchodziłoby w rachubę. Akceptowalne też byłoby podawanie ścieżki w nagłówku (stopce) pliku tekstowego.

Będę wdzięczny za każdą pomoc.
Pozdrawiam,
Cezary.
LibreOffice 7.2.5.2 (x64)
Windows 10 lub Ubuntu
cemik1
Posty: 18
Rejestracja: czw lip 31, 2014 11:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: cemik1 »

Na drugie pytanie znalazłem odpowiedź. Należy zmodyfikować łącze. Zamiast pełnej ścieżki wpisać "file:./" i potem nazwę pliku, z którego pobierane są dane. Działa poprawnie po przeniesieniu do innego katalogu (LO i OO).
calc5.jpg
Kwestią otwartą pozostaje zmiana rozmiaru pobieranej tabeli.
LibreOffice 7.2.5.2 (x64)
Windows 10 lub Ubuntu
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: belstar »

Piszę z głowy, więc mogę poczynić błąd, ale ważna jest sama idea.
W Calcu musisz użyć nazw zakresów, w tym przypadku nazwa musi być dynamiczna. Podpowiem że musisz użyć funkcji PRZESUNIĘCIE(), na forum na pewno znajdziesz rozwiązanie (hasło do szukajki: Dynamiczne zakresy danych). Po uporaniu się z zakresem, w Writerze w oknie Edytuj łącze i w pole Kategoria wpisz zdefiniowaną nazwę zakresu. Powinno działać.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: Jan_J »

Po sprawdzeniu obawiam się, że wstawione we Writerze łącza do Calca używające nazw zakresów nie są rozumiane. Tym bardziej funkcje, których intrpretacja następuje tylko w obrębie formuł.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: belstar »

Jan_J pisze:Po sprawdzeniu obawiam się, że wstawione we Writerze łącza do Calca używające nazw zakresów nie są rozumiane.
U mnie działa. A co do dynamicznego zakresu, muszę to sprawdzić, lecz już nie dziś.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: belstar »

Sprawa wygląda następująco:
1. Nazwane zakresy są akceptowalne ale tylko ustawione na sztywno. Dynamiczne niestety nie działają.
2. Tabela połączona (DDE), aktualizuje się tylko w ramach wklejonej wielkości. Usunięcie kolumny, czy dodanie wiersza jest pomijane tzn. usunięcie kolumny w calcu skutkuje brakiem wpisów w tabeli writera, ale nie zmienia się jej wielkość i pozostają puste komórki w tabeli, a dodanie wiersza w calcu nie powoduje żadnej reakcji we writerze, nawet po zmianie adresu w oknie Edytuj łącza. Łącze musi być przerwane i tabela usunięta i wklejona od nowa żeby nowy wiersz był uwzględniony.

Pozostaje skorzystać z makr.
Jeśli autor tematu jest zainteresowany, mogę to zrobić, lecz nie na teraz. Także proszę o odzew.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
cemik1
Posty: 18
Rejestracja: czw lip 31, 2014 11:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: cemik1 »

Autor zainteresowany jest. Sam zaczął się też przebijać przez makra.
Może w weekend coś się urodzi. Na razie potrafię poprzez makro identyfikować DDE i pobierać jego właściwości (pola). Pozostaje tylko je zmodyfikować. Na razie nie mam pomysłu jak.
Ma to być narzędzie dla osoby, która sama nie zmodyfikuje właściwości łącza. Zresztą w realnym dokumencie jest ich kilkadziesiąt i ręczna manipulacja nimi jest dość żmudna.
Załączniki
tekst.odt
(14.69 KiB) Pobrany 195 razy
arkusz.ods
(9.94 KiB) Pobrany 207 razy
LibreOffice 7.2.5.2 (x64)
Windows 10 lub Ubuntu
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: belstar »

cemik1 pisze:Na razie potrafię poprzez makro identyfikować DDE i pobierać jego właściwości (pola). Pozostaje tylko je zmodyfikować. Na razie nie mam pomysłu jak.
Małe ale.
Modyfikacja łącza nie zmienia rozmiaru tablicy, pisałem o tym w poprzednim poście, tak więc zmiana wielkości zakresu w edycji łącza nie zmieni tabeli na mniejszą/większą, trzeba ją usunąć i wstawić od nowa z poprawionym rozmiarem.
Moim zdaniem trzeba to zrobić tak:
1. Pobrać ilość tabel w dokumencie.
2. Zidentyfikować adresy łącz każdej tabeli ( tu przyda się to co do tej pory stworzyłeś).
3. Usunąć tabelę
4. Pobrać z calca nową wersje, ale potrzebny będzie aktualny adres zakresu.
5. Skopiować/pobrać nowe dane z calca
6. Wstawić nową na miejsce usuniętej.
I tak dla każdej tabeli
LibreOffice 5.1.2.2 Ubuntu 16 LTS
cemik1
Posty: 18
Rejestracja: czw lip 31, 2014 11:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: cemik1 »

Właśnie tak zamierzałem to zrobić. O ile na usuwanie czy wstawianie tabel są makra przykładowe i pewnie sobie z tym poradzę, to nie za bardzo wiem, jak zmodyfikować pole
Command Element Arkusz1.D6:F9
Gdybyś mógł na to spojrzeć i coś zaproponować, będę wdzięczny. Rozmiar tabeli będę pobierał ze stałego miejsca w arkuszu kalkulacyjnym (jest ono nawet w załączonym przykładzie).
LibreOffice 7.2.5.2 (x64)
Windows 10 lub Ubuntu
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Dynamiczny rozmiar importowanej tablicy

Post autor: belstar »

cemik1 pisze:Właśnie tak zamierzałem to zrobić. O ile na usuwanie czy wstawianie tabel są makra przykładowe i pewnie sobie z tym poradzę, to nie za bardzo wiem, jak zmodyfikować pole
Modyfikacja nie będzie potrzebna. Pobierz adres z tego pola i na podstawie tego będziesz mógł określić komórkę z adresem nowej tabeli np.

Kod: Zaznacz cały

Command Element Arkusz1.D6:F9
Tu kluczowe dane to:

Kod: Zaznacz cały

Arkusz1.D6
Dodaj do D6 np. 10 otrzymasz D16 i w właśnie komórce powinieneś przechowywać rozmiar nowej tabeli:

Kod: Zaznacz cały

Arkusz1.D6:G10
Pobierz nowe dane, usuń tabele i wstaw nową.
Żeby adres tabeli zmieniał się sam, wykorzystaj dynamiczne zakresy.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
ODPOWIEDZ