Początki - Łączenie z plikiem zewnętrznym
Początki - Łączenie z plikiem zewnętrznym
Witam
Dopiero zaczynam coś robić wykorzystując Macra w LibreOffice. Nie ukrywam, że posiłkuje się przykładami, które zaczerpuje w sieci. Mam plan aby stworzyć w jednym pliku .ods macro, które będzie pobierało dane z innego pliku ods. Znalazłem instrukcję, któr ateoretycznie to robi, nigdzie indziej nie znalazłem takiego rozwiązania, w ogóle nie znalazłem oprócz tego żadnego rozwiązania tego problemu. Poniżej chciałem wam przedstawić ten kawałek kodu w Basic'u. Niestety podczas uruchamiania macra pojawia się komunikat "Nie zdefiniowano procedury lub funkcji" i zaznacza się linia "Set xSheet = GetObject("/home/piotrosan/Pulpit/test.ods")". Czy w ogóle można coś takiego w taki sposób zrobić ? Czy ja jeszcze muszę coś dopisać aby to zadziałało ?
Przyznam, że bardzo mało jest przykładów w sieci , albo ja jakoś nie umiem ich szukać.
Poniżej moje macro
Option Explicit
Sub Porownywarka
Dim xSheet as Object
Set xSheet = GetObject("/home/piotrosan/Pulpit/test.ods")
oCell = xSheet.getCellByPosition(0, 0)
MsgBox "oCell.value"
End Sub
Dopiero zaczynam coś robić wykorzystując Macra w LibreOffice. Nie ukrywam, że posiłkuje się przykładami, które zaczerpuje w sieci. Mam plan aby stworzyć w jednym pliku .ods macro, które będzie pobierało dane z innego pliku ods. Znalazłem instrukcję, któr ateoretycznie to robi, nigdzie indziej nie znalazłem takiego rozwiązania, w ogóle nie znalazłem oprócz tego żadnego rozwiązania tego problemu. Poniżej chciałem wam przedstawić ten kawałek kodu w Basic'u. Niestety podczas uruchamiania macra pojawia się komunikat "Nie zdefiniowano procedury lub funkcji" i zaznacza się linia "Set xSheet = GetObject("/home/piotrosan/Pulpit/test.ods")". Czy w ogóle można coś takiego w taki sposób zrobić ? Czy ja jeszcze muszę coś dopisać aby to zadziałało ?
Przyznam, że bardzo mało jest przykładów w sieci , albo ja jakoś nie umiem ich szukać.
Poniżej moje macro
Option Explicit
Sub Porownywarka
Dim xSheet as Object
Set xSheet = GetObject("/home/piotrosan/Pulpit/test.ods")
oCell = xSheet.getCellByPosition(0, 0)
MsgBox "oCell.value"
End Sub
LibreOffice 3.5.7.2 OS Ubuntu 12.04
Re: Początki - Łączenie z plikiem zewnętrznym
A nie lepiej zamiast makra użyć funkcji DDE()
Kod: Zaznacz cały
=DDE("soffice";"/home/slav/Pulpit/przykład.ods";"Arkusz1.A1")
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Początki - Łączenie z plikiem zewnętrznym
Chciałem dodatkowo w locie obrobić dane, wyciągnąć z tgo obiektu jedną kolumne, i porównać każdy element z innymi danymi. Ok ale może chce zabić komara armatą.
Generalnie chce zbudować taki automat, który będzie mi porównywał wartości z jednego pliku z wartościami z drugiego pliku i wypluwał w jakimś arkuszu/zakładce wynik. Macie jakieś propozycje inne niż Macro ?
Generalnie chce zbudować taki automat, który będzie mi porównywał wartości z jednego pliku z wartościami z drugiego pliku i wypluwał w jakimś arkuszu/zakładce wynik. Macie jakieś propozycje inne niż Macro ?
LibreOffice 3.5.7.2 OS Ubuntu 12.04
Re: Początki - Łączenie z plikiem zewnętrznym
W sumie mogę to napisać w innym języku , najwyżej będę porównywał pliki tekstowe , ale jest to robione dla koleżanki z pracy więc nie wiem czy będzie potrafiła uruchamiać skrypt z poziomu shell'a
LibreOffice 3.5.7.2 OS Ubuntu 12.04
Re: Początki - Łączenie z plikiem zewnętrznym
Mimo wszystko jakby ktoś podpowiedział jak to wykonać w LibreOffice byłbym wdzięczny, lub podsunął jakąś dobrą dokumentację, rozszerzoną o działanie na różnych plikach , bądź opis obiektów dostępnych w LibreOffice.
LibreOffice 3.5.7.2 OS Ubuntu 12.04
Re: Początki - Łączenie z plikiem zewnętrznym
Idąc za ciosem z pierwszego mojego postu, proponuje wykorzystać w kodzie funkcje arkuszowe. Wstawiam ci dwa przykłady użycia funkcji arkuszowych w makrze.
Na podstawie tych przykładów stwórz sobie własną funkcje DDE()
Kod: Zaznacz cały
'funkcja arkuszowa PODAJ.POZYCJE
'argumenty
'Arkusz - Podać nazwę arkusza
'Szukane - Ciąg tekstowy do wyszukania
'zakres - Zkares komórek w ostaci tekstu - "A1:A500"
'Ktory - 0 pierwszy 1 ostatni
Function getMatch(Arkusz, Szukane, Zakres, Ktory)
Dim oFunct As Object
Dim oRange As Object
Dim arg
oFunct = createUnoService( "com.sun.star.sheet.FunctionAccess" )
oRange = arkusz.getCellRangeByName(Zakres)
arg = ARRAY(szukane, oRange, ktory)
getMatch = oFunct.callFunction("MATCH" , arg)
End Function
Function getCountA(Arkusz, Kolumna)
Dim oFunct As Object
Dim oRange As Object
oFunct = createUnoService( "com.sun.star.sheet.FunctionAccess" )
oRange = Arkusz.getCellRangeByName(Kolumna & "1:" & Kolumna & "15000")
getCountA = oFunct.callFunction("COUNTA" , ARRAY(oRange))
End Function
Na podstawie tych przykładów stwórz sobie własną funkcje DDE()
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Początki - Łączenie z plikiem zewnętrznym
Albo inaczej:
Otwórz dokument (może być ukryty żeby nie było go widać dla użytkownika).
Pobierz interesujące cię dane
Zamknij go.
Itd.
Przykład jak to możesz zrobić znajdziesz
http://forum.openoffice.org/pl/forum/vi ... f=9&t=1797
Otwórz dokument (może być ukryty żeby nie było go widać dla użytkownika).
Pobierz interesujące cię dane
Zamknij go.
Itd.
Przykład jak to możesz zrobić znajdziesz
http://forum.openoffice.org/pl/forum/vi ... f=9&t=1797
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Początki - Łączenie z plikiem zewnętrznym
thx , może coś z tego ukręce
LibreOffice 3.5.7.2 OS Ubuntu 12.04