Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

"Konwersja" makra z Excel na OpenOffice-tryb projek. i błąd nielogiczn

04 Lut 2019 21:48 330 8
  • Poziom 40  
    Witam
    Temat miał być taki:
    "Konwersja" makra z Excel na Open Office - tryb projektowania i nielogiczny błąd.

    Rzadko korzystam z OpenOffica a jeszcze mniej z basica w OO
    Niemniej zostałem poproszony o konwersję pliku makr z excela na OO.

    Mam wersję OO 4.1.6 (nowe wersje podobno lepiej współpracują z VBA a szczególnie z adresowaniem komórek i arkuszy)

    Pierwszy problem:
    Po otwarciu pliku zawsze włącza się w trybie projektowania. (nie można nacisnąć przycisków, trzeba "ręcznie" wyłączyć tryb projektowania). Nie mogę sobie z tym poradzić. Co zmienić?

    Drugi problem - ten mnie bardziej inspiruje:
    Po kliknięciu w przycisk (jak już wyłączę ręcznie tryb projektowania)
    makro staje na pierwszej linijce kodu z błędem:
    "Błąd pracy BASIC'a
    Nie ustawiono zmiennej obiektu."

    wciskam OK
    Komunikat ginie.
    Jeżeli przełączę się powrótnie na arkusz "Menu" i wcisnę inny przycisk (lub ten sam) mam w kółko ten sam komunikat błędu.

    ALE...

    Wystarczy po komunikacie błędu i wciśnięciu OK coś bez znaczenia zmienić w kodzie np: gdziekolwiek dodać i usunąć spację (bez żadnego zapisywania),
    przełączyć się na arkusz "Menu" i wcisnąć przycisk to nagle jest wszystko "ok". Działa bez zarzutów.
    Co jest nie tak ???

    W załączeniu plik (nie poprawiałem jeszcze procedur związanych z produkcją) ale samo przyjmowanie i wydawanie z magazynu (po wcześniejszych zabiegach) działa prawidłowo.

    Co robię nie tak lub co poprawić?
  • Poziom 40  
    Prot napisał:
    ...pozostawienia "niewykomentowanego" kodu VBA w Module1

    No bez jaj :D
    Prot napisał:
    U mnie niestety nic nie działa w OO 4.1.5

    A w ogóle włączyłeś makra? (przestawiłeś opcje w bezpieczeństwie makr by OO się pytało czy włączyć makra? )
  • Moderator Programowanie
    Marku, dopóki do formantów masz przypisane procedury, których nie ma lub są błędne, OpenOffice będzie "uważał", że cały czas jeszcze nad tym pracujesz ;)

    Nie mam pojęcia dlaczego Ci te makra działają (tak przynajmniej zrozumiałem), bo nie powinny...

    Np dla przycisku [Nowa Dostawa] działa takie coś:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Masz tam odpowiedniki:
    -Scheets.Select
    -Range.Select
    -Application.ScreenUpdating

    Pamiętaj też o tym (Patrz licznik pętli), że w OO indeksy komórek zaczynają się od zera Np A1 to CellByPossition(0, 0)
  • Poziom 40  
    Dzięki za zainteresowanie.
    Wiem że basic w OO jest inny. Wiem też że adresowanie i inne "indeksacje" zaczynają się od 0
    Ale dziwi mnie to, że właśnie program działa - ale tylko po takich jak napisałem "czarach".

    Koledzy spróbujcie zrobić tak jak napisałem w pierwszym poście, czyli
    Po wyłączeniu projektowania, wciśnięciu pierwszego przycisku i po pojawieniu się tego komunikatu który pokazał kolega Prot:
    -naciśnijcie OK na komunikacie
    -dodajcie gdziekolwiek do kodu spacje i ją usuńcie
    -przełączcie się spowrotem na arkusz Menu i ponownie wciśnijcie przycisk

    I się okaże (przynajmniej u mnie tak jest) że wszystko działa poprawnie - nie ma żadnego błędu adresowania nie ma błędu związanego z Sheet /Range itd(poza produkcją bo jej nie ruszałem).

    Skacze swobodnie między arkuszami i stany dodają i odejmują sie prawidłowo
    Dlatego piszę na forum bo też tego nie rozumiem że przy starcie nie chce działać ale jak tylko coś zrobi w kodzie (popatrzy na niego swoim okiem :) ) to działa prawidłowo.

    Prawidłowo moze nie do końca - odświeżanie się nie wyłącza
  • Moderator Programowanie
    marek003 napisał:
    Koledzy spróbujcie zrobić tak jak napisałem
    U mnie, Open Office 3.4.1, to nie działa. Błąd Nr 91.

    Sam jestem ciekaw :)
    A nie instalowałeś jakiegoś dodatku?
  • Poziom 40  
    Nie miałem na kompie OO. W sobotę zainstalowałem aktualny OO pobrany z sieci.
    Nic więcej nie instalowałem.
    Rzeczywiście na początku wyskakiwał błąd ale wystarczyło dodać ".Value" do "końcówek adresowania excelowskiego" i wszystko ruszyło.
    Dopóki nie wyłączyłem i włączyłem pliku.
    Potem już tylko pozostają te "czary" by pracowało.

    W pracy na XP i wersji OO 3.3.0 też nie działa - po pierwszym błędzie jak na zrzucie - "czary" - i drugi błąd 91

    Ale przed chwila sprawdziłem na innym kompie w pracy z wersją 4.1.5 i działa tak jak pisałem (po czarach)

    W domu XP i Excel2010 i te OO 4.1.6
    W pracy W10 i bez excela i OO 4.1.5

    Może można jakoś wymusić to aby OO zajął się tym kodem sam z siebie - samo zrobiło takie czary.
    Przyznam że lepiej czuje się w VBA excela bo go trochę znam niż w OO gdzie nagrywanie jako samonauka to jakaś porażka.

    Prot masz ta samą wersję co ja na jednym kompie w pracy - nie działają ci "moje czary"?



    edit
    ----------------------------------------
    z Trybem projektowym poradziłem sobie w ten sposób że dodałem drugi moduł z napisanym makrem wg stylu OO i w Mój skoroszyt automatycznie przy starcie uruchamiam to makro. W tym przypadku tryb projektowania się nie włącza i przyciski działają od razu.

    Teraz jak wymusić dodanie spacji w kodzie makra i jej usunięcie tak by docelowo OO jakoś "przeliczyło" ten kod i by on zadziałał.? :)
  • Poziom 35  
    marek003 napisał:
    Koledzy spróbujcie zrobić tak jak napisałem w pierwszym poście,

    Ok :D
    Najpierw ustawiłem ładowanie i zapis kodu z Excela - efektu nie ma :cry:
    Zastosowałem Twój sposób dołożyłem tylko spacje w kodzie na końcu wstrzymującej linii i ... ruszyło :crazyeyes: choć nie wiem dlaczego :?: :cunning:
    "Konwersja" makra z Excel na OpenOffice-tryb projek. i błąd nielogicznmacroO..PNG Download (66.72 kB)

    Apache Open Office v. 4.1.5 pod WinXPSP3 (java v. 1.8.0.151)