Dynamiczny rozmiar importowanej tablicy
Dynamiczny rozmiar importowanej tablicy
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: a po zmianie rozmiaru tabeli w arkuszu kalkulacyjnym powinna się ona też zaktualizować (możliwie automatycznie lub po uruchomieniu makra) w pliku tekstowym
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.
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: a po zmianie rozmiaru tabeli w arkuszu kalkulacyjnym powinna się ona też zaktualizować (możliwie automatycznie lub po uruchomieniu makra) w pliku tekstowym
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
Windows 10 lub Ubuntu
Re: Dynamiczny rozmiar importowanej tablicy
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).
Kwestią otwartą pozostaje zmiana rozmiaru pobieranej tabeli.LibreOffice 7.2.5.2 (x64)
Windows 10 lub Ubuntu
Windows 10 lub Ubuntu
Re: Dynamiczny rozmiar importowanej tablicy
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ć.
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
Re: Dynamiczny rozmiar importowanej tablicy
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)
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Dynamiczny rozmiar importowanej tablicy
U mnie działa. A co do dynamicznego zakresu, muszę to sprawdzić, lecz już nie dziś.Jan_J pisze:Po sprawdzeniu obawiam się, że wstawione we Writerze łącza do Calca używające nazw zakresów nie są rozumiane.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Dynamiczny rozmiar importowanej tablicy
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.
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
Re: Dynamiczny rozmiar importowanej tablicy
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.
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
Windows 10 lub Ubuntu
Re: Dynamiczny rozmiar importowanej tablicy
Małe ale.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.
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
Re: Dynamiczny rozmiar importowanej tablicy
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).
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
Windows 10 lub Ubuntu
Re: Dynamiczny rozmiar importowanej tablicy
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.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
Kod: Zaznacz cały
Command Element Arkusz1.D6:F9
Kod: Zaznacz cały
Arkusz1.D6
Kod: Zaznacz cały
Arkusz1.D6:G10
Żeby adres tabeli zmieniał się sam, wykorzystaj dynamiczne zakresy.
LibreOffice 5.1.2.2 Ubuntu 16 LTS