Corel FORUM Strona Główna Corel FORUM
Forum użytkowników programów firmy Corel. Grafika wektorowa, rastrowa i obróbka zdjęć cyfrowych

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
makro data
Autor Wiadomość
miszcz301 
Profesjonalista



Wersja CorelDRAW: 9
Pomógł: 47 razy
Wiek: 38
Dołączył: 14 Kwi 2010
Posty: 457
Skąd: gorzów
Wysłany: 6 Grudzień 2011, 09:08   makro data

potrzebuje chociaz jakis pomysl na makro ktore wlaczy sie automatycznie po otwarciu pliku.

dokladniej , to po otwarciu pliku powinna zaktualizowac sie data.

lub jakis inny pomysl jak zamiescic date w cdr, zeby po otwarciu aktualizowala sie z automatu
 
 
Martin Nez 
Doradca
Grafik?


Wersja CorelDRAW: 2019
Pomógł: 14 razy
Dołączył: 29 Sty 2011
Posty: 114
Skąd: Czmoń
Wysłany: 7 Grudzień 2011, 01:29   

Tworzysz sobie dokument z tekstem artystycznym, który ma nazwę "Data" (tekst, nie dokument) i wpisaną w nim starą datą... To tak, żeby nie komplikować wyszukiwania tego, co powinno być zmienione... Otwierasz Edytor makr i w projekcie "Global Macros" rozwijasz "CorelDRAW X5 Objects". W ThisMacroStorage wklejasz kod:
Kod:
Private Sub GlobalMacroStorage_DocumentOpen(ByVal Doc As Document, ByVal FileName As String)
    Dim data As Date
    data = Date
    ActiveLayer.FindShape("Data").Text.Story.Text = data
End Sub

Zapisujesz Edytor, wyłączasz Corela i uruchamiasz wcześniej utworzony plik.
U mnie działa, więc u Ciebie też powinno jeśli nie zapomniałem o czymś napisać.

MN
 
 
chezare 



Pomógł: 402 razy
Dołączył: 24 Gru 2010
Posty: 4551
Skąd: Grodzisk Mazowiecki
Wysłany: 8 Grudzień 2011, 23:17   

Bardzo dobry pomysł, który będzie wywalał błąd w każdym dokumencie w którym nie ma obiektu o nazwie Data :)
Najpierw procedura powinna sprawdzić czy tekst o nazwie Data istnieje i wtedy go zmodyfikować a jak go nie ma zakończyć działanie bez żadnej akcji.
 
 
miszcz301 
Profesjonalista



Wersja CorelDRAW: 9
Pomógł: 47 razy
Wiek: 38
Dołączył: 14 Kwi 2010
Posty: 457
Skąd: gorzów
Wysłany: 9 Grudzień 2011, 22:38   

dzieki, poki co podpiolem excela z funkcja dzis...

ale powyzsze rozwiazanie tez potestuje :)
 
 
miszcz301 
Profesjonalista



Wersja CorelDRAW: 9
Pomógł: 47 razy
Wiek: 38
Dołączył: 14 Kwi 2010
Posty: 457
Skąd: gorzów
Wysłany: 10 Grudzień 2011, 08:33   

u mnie w x4 działa, ale zapomnialem wspomniec ze w pracy mam 9.0 :-/
 
 
michal.s 
Praktyk


Wersja CorelDRAW: x4
Pomógł: 1 raz
Dołączył: 01 Lut 2012
Posty: 66
Skąd: Poznań
Wysłany: 3 Luty 2012, 00:06   

Dzień dobry Panowie.
Zaciekawił mnie Wasz temat i próbowałem zastosować go u siebie.
Niestety bez powodzenia :-(
Na żółto podkreśla mi tekst "ActiveLayer.FindShape("Data").Text.Story.Text = data"
Czy zechcielibyście mi pomóc?

Pozdrawiam Michał
 
 
miszcz301 
Profesjonalista



Wersja CorelDRAW: 9
Pomógł: 47 razy
Wiek: 38
Dołączył: 14 Kwi 2010
Posty: 457
Skąd: gorzów
Wysłany: 3 Luty 2012, 21:47   

zrobiles wszystko jak MartinNez napisał?

jakiego masz corela?
 
 
chezare 



Pomógł: 402 razy
Dołączył: 24 Gru 2010
Posty: 4551
Skąd: Grodzisk Mazowiecki
Wysłany: 4 Luty 2012, 08:47   

Na początek wypróbuj czy to polecenie działa w twojej wersji Corela.
Żeby to sprawdzić otwórz nowy dokument, wpisz obojętnie jaki tekst, może być również akapitowy i jakoś go w menedżerze obiektów nazwij, np. datownik (menu Narzędzia->menedżer obiektów, zaznacz napis, kliknij 2x pozycję, która mu odpowiada w menedżerze obiektów i wpisz nazwę, np. datownik. Znaczenie ma wielkość znaków, w makrze musi być dokładnie taka sama nazwa.)

Teraz trzeba utworzyć makro, które posłuży do przetestowania polecenia.
Wciśnij Alt+F11 (uruchamia edytor VBA) i wpisz tekst makra:
Kod:
Sub test()
ActiveLayer.FindShape("datownik").Text.Story.Text = Date
End Sub

Kliknij gdzieś wewnątrz procedury i uruchom makro

Jak nie wyświetli się komunikat o błędzie, to znaczy że działa :-)
Żeby się utwierdzić w tym przekonaniu sprawdź czy faktycznie tak się stało w oknie CorelDRAW. Jeśli eksperyment przebiegł pomyślnie, to zrób tak jak napisał Martin Nez, żeby to zadziałało przy otwieraniu każdego dokumentu funkcja musi mieć specjalną nazwę i zapisana tam gdzie kolega napisał.
Nie wydaje mi się konieczne deklarowanie zmiennej pod którą podstawia się date a następnie tą zmienną wstawia się do polecenia zmieniającego tekst.
Wystarczy jak wewnątrz procedury będzie:
Kod:
On Error GoTo omin
ActiveLayer.FindShape("datownik").Text.Story.Text = Date
omin:

Sekwencja:
Kod:
on error goto etykieta
...
etykieta:
powinna uchronić przed błędem wykonania w przypadku braku w dokumencie, na aktywnej warstwie napisu o nazwie użytej w kodzie.
 
 
michal.s 
Praktyk


Wersja CorelDRAW: x4
Pomógł: 1 raz
Dołączył: 01 Lut 2012
Posty: 66
Skąd: Poznań
Wysłany: 6 Luty 2012, 00:17   

Cześć Panowie.
Pokombinowałem i zadziałało u mnie w Corelu X4 w momencie jak zamieniłem nazwę elementu na datownik (przykład w załączniku pdf).
W innym przypadku nie wprowadzało zmiany daty.
Bardzo dziękuję Wam za Fachową Pomoc.

Pozdrawiam michal.s

ps. Może wiecie, czy jest możliwość zaciągnięcia do Corela innych danych tekstowych z innego pliku np pdf? Chodzi mi o uzupełnienie tabeli o nazwę, rozmiar itp? Codziennie muszę uzupełniać tabelkę po kilka razy i raz, że jest monotonne, a dwa łatwo się pomylić :->
I jeszcze jedno, jak wstawiś do Postu zrzut ekranu?
Ot takie banalne pytanie :->

Rysunek2.pdf
Pobierz Plik ściągnięto 472 raz(y) 724.23 KB

 
 
chezare 



Pomógł: 402 razy
Dołączył: 24 Gru 2010
Posty: 4551
Skąd: Grodzisk Mazowiecki
Wysłany: 6 Luty 2012, 08:56   

Zadziałało bo albo nie nazwałeś albo nazwałeś źle tekst w Corelu. To może być dowolna nazwa. Do Corela można wstawić pdfa, można też, ponieważ jest wyposażony w mechanizm OLE wstawić dokument Worda czy Excela. Taki powiązany z elementem zewnętrznym dokument Corela będzie się zmieniał razem ze zmianami oryginału.
Żeby wstawić obrazek w tekst postu należy umieścić go w dowolnym miejscu w sieci, ale takim który pozwala na jego wyświetlanie. Jak go gdzieś widzisz, to wystarczy skopiować jego internetowy adres i wstawić w znaczniki IMG.
Np. tak .
To obrazek z nagłówka tej strony. Koledzy używają różnych serwisów do przechowywania plików, ja voila.pl
 
 
michal.s 
Praktyk


Wersja CorelDRAW: x4
Pomógł: 1 raz
Dołączył: 01 Lut 2012
Posty: 66
Skąd: Poznań
Wysłany: 6 Luty 2012, 17:58   

Sprawdziłem wszystko co mogłem.
Niestety, cały czas pojawia się błąd, jak w załączniku.
Rzućcie swoim fachowym okiem, co mogę robić źle.
Dołączyłem także plik cdr wraz z makrem, tak na wszelki wypadek, bo może w nim tkwi przyczyna.
Jeszcze jedno, na innym komputerze plik otwiera się bez komunikatu, lecz nie wprowadza daty.

blad.pdf
Pobierz Plik ściągnięto 520 raz(y) 56.57 KB

RAMKA BGM_2,84_1.cdr
Pobierz Plik ściągnięto 776 raz(y) 84.18 KB

 
 
chezare 



Pomógł: 402 razy
Dołączył: 24 Gru 2010
Posty: 4551
Skąd: Grodzisk Mazowiecki
Wysłany: 7 Luty 2012, 00:07   

Z tego co widzę w pdfie, to zastosowałeś procedurę kolegi Martina Nez i moją nazwę obiektu w dokumencie. W tej procedurze jest moim zdaniem wszystko w porządku choć jak wcześniej napisałem, deklarowanie zmiennej po to żeby jej wartość chwilę potem, jednorazowo wstawić do polecenia zamieniającego tekst jest moim zdaniem zupełnie niepotrzebne. Do cdra się nie mogę odnieść bo jest w wersji, której moje X3 nie otwiera.
Żeby ten wynalazek zadziałał, to muszą być spełnione przynajmniej dwa warunki. W dokumencie musi znaleźć się tekst, ozdobny albo akapitowy, który ma nazwę taką jak użyta w procedurze, w twoim przypadku "datownik". W procedurze musi się nazywać dokładnie tak samo jak w dokumencie. Jeśli w dokumencie jest "datownik" to w procedurze nie może być np. "Datownik", będzie błąd. Drugi warunek jest taki, że obiekt (tekst) w dokumencie musi być umieszczony na aktywnej po otwarciu dokumentu warstwie. Jeśli taki eksperyment spróbujesz przeprowadzić np. umieszczając tekst na 2 stronie dokumentu, to nie zadziała. Ta procedura nie zadziała też prawie na pewno przy próbie "ręcznego" jej uruchomienia, wykonuje się wyłącznie przy otwieraniu dokumentu.
W tym konkretnym przypadku wygląda mi na to, że w twoim dokumencie procedura nie może znaleźć obiektu o nazwie "datownik".
I jeszcze jedno. Umieszczenie takiej procedury w module, który dotyczy wszystkich otwieranych dokumentów i pozbawienie jej obsługi błędów spowoduje, że praktycznie w każdym otwieranym dokumencie obejrzysz okienko z tekstem "error" :-) To nie ma sensu,
Na mój rozum to tyle, niestety moja wiedza na temat pisania makr w Corelu jest żadna.
Jaki jest najszybszy ssak na Ziemi?
Oczywiście gepard, a najszybszy ptak?
Ptak geparda :-)
 
 
miszcz301 
Profesjonalista



Wersja CorelDRAW: 9
Pomógł: 47 razy
Wiek: 38
Dołączył: 14 Kwi 2010
Posty: 457
Skąd: gorzów
Wysłany: 7 Luty 2012, 11:36   

chezare napisał/a:
Jaki jest najszybszy ssak na Ziemi?
Oczywiście gepard, a najszybszy ptak?
Ptak geparda :-)


:mrgreen: :mrgreen:
 
 
michal.s 
Praktyk


Wersja CorelDRAW: x4
Pomógł: 1 raz
Dołączył: 01 Lut 2012
Posty: 66
Skąd: Poznań
Wysłany: 7 Luty 2012, 13:12   

szybka z nich "para" :)

chezare
Nawiązując do nurtującego mnie tematu, załączyłem plik cdr zapisany w X3.
Jak będziesz miał chwilkę zajrzyj do niego proszę.
Według mnie zrobiłem wszystko według uwag na forum i d....

RAMKA_BGM_2,84_1.cdr
plik w wersji X3
Pobierz Plik ściągnięto 789 raz(y) 74.89 KB

 
 
chezare 



Pomógł: 402 razy
Dołączył: 24 Gru 2010
Posty: 4551
Skąd: Grodzisk Mazowiecki
Wysłany: 8 Luty 2012, 08:38   

Michal.s, przeprowadziłem badania na Twoim pliku.
Tak skonstruowany dokument straszy użytkownika wirusami które mogą znajdować się w makrach.

Raz kozie śmierć, włączam.
Dokument się otwiera i nic się nie dzieje, daty nie ma, komunikatu o błędzie też.
Wygląda na to, że wszystko jest dobrze?
Zmodyfikowałem trochę plik przenosząc interesujący nas element na samą górę i odnosząc makro do konkretnego dokumentu. Zapisałem i uruchamiam od nowa. Znowu pyta się czy odblokować makra i po otwarciu wymienia tekst na aktualną datę. Niestety wcześniej pyta się czy przywrócić zapisaną wersję pliku? Żeby sprawdzić efekt trzeba oczywiście na takie pytanie odpowiedzieć negatywnie. Jak już mówiłem nie znam się na makrach VBA w Corelu ale takie rozwiązanie wydaje mi się marnym pomysłem. Może gdyby to makro przypisać do innego zdarzenia, do drukowania albo zapisywania? Może procedurę zapisać w pliku z makrami, który jest dostępny dla wszystkich dokumentów i wyciągnąć skrót żeby jednym kliknięciem ikony wstawić datę? Nie wiem?
W dokumentach Offica jak się raz odpowie, że się nie boimy zawartości makr w dokumencie, to program przyjmuje to do wiadomości i następnym razem już nas nie straszy, tutaj wygląda to inaczej. Ja bym nie chciał mieć dokumentu, który za każdym razem traktuje mnie jak idiotę, który nie wie co robi.
Szaman by się jak nic przydał.

PS
Jeśli interesuje Cię sposób jak jednym kliknięciem wstawić datę, bez uciążliwości o których napisałem wyżej, to chętnie wytłumaczę. Pomysł z automatyką przy otwieraniu dokumentu uważam za zły. Raz zaktualizuje Ci się data a następnym skasują pliki, bo trafisz na wynalazek jakiegoś "dowcipnisia".

RAMKA_BGM_2,84_2.cdr
Pobierz Plik ściągnięto 733 raz(y) 70.57 KB

 
 
michal.s 
Praktyk


Wersja CorelDRAW: x4
Pomógł: 1 raz
Dołączył: 01 Lut 2012
Posty: 66
Skąd: Poznań
Wysłany: 9 Luty 2012, 14:33   

chezare, do pliku celowo dołączyłem makro, żeby plik był w takiej formie jak u mnie.
Normalnie makra zapisuję w GlobalMacros.
Bardzo dziękuję Tobie za pomoc, mam teraz pewność, że nie popełniłem błędu, ponieważ otwieranie pliku wyglądało u mnie dokładnie tak samo jak u Ciebie. Zastanawiam się tylko dlaczego nie chciała się zaktualizować data i dlaczego wyskakuje komunikat o przywróceniu poprzedniej wersji?
Co do wprowadzania daty, to jeżeli masz wiedzę jak zaktualizować ją w pliku, to chętnie skorzystam.
A może dysponujesz wiedzą, jak uzupełnić pola z tabelki w Corelu danymi z arkusza kalkulacyjnego z Open Offica?
Chodzi mi o tabelkę którą testowałeś.
 
 
chezare 



Pomógł: 402 razy
Dołączył: 24 Gru 2010
Posty: 4551
Skąd: Grodzisk Mazowiecki
Wysłany: 9 Luty 2012, 21:45   

Pewnie dlatego, że makro zmienia zawartość pliku zanim się na dobre otworzy?
Ten mechanizm, który pozwala uruchomić procedurę przy otwieraniu pliku jest w obecnych czasach dosyć ryzykownym pomysłem, a pozwalanie procedurze na takie zachowanie we wszystkich otwieranych arkuszach to proszenie się o kłopoty. Dostajesz dokument zaopatrzony w procedurę uruchamiającą się przy otwieraniu pliku i masz do wyboru zaryzykować i włączyć makra, albo zrezygnować i drastycznie ograniczyć możliwości dokumentu. Tak źle a tak jeszcze gorzej. Przyznam się, że teraz straciłem już orientację? Chcesz wstawiać dane z OpenOffica do CorelDRAW co jest oczywiście możliwe do wykonania, mało tego dziecinnie proste, a datę która przecież też w takim dokumencie może być chcesz wstawiać makrem i to do tego wyjątkowo niebezpiecznym bo uruchamianym przy starcie? Gdybyś opisał dokładniej o co w tym wszystkim chodzi, to z całą pewnością łatwiej byłoby znaleźć rozwiązanie.
 
 
michal.s 
Praktyk


Wersja CorelDRAW: x4
Pomógł: 1 raz
Dołączył: 01 Lut 2012
Posty: 66
Skąd: Poznań
Wysłany: 20 Luty 2012, 22:37   

Wiitaj chezare po krótkiej przerwie :-)
Troszkę sie przez ten czas WYBYCZYŁEM i zdrowo poobijałem (pierwsze kroki na nartach :-) )
Ale do rzeczy.
W 100%-tach się z Tobą zgadzam co do dołączania makr do pliku.
Nie jest to dobry pomysł. Masz RACJĘ.
Co do wstawienia danych z OO do Corela, to dużo by trzeba pisać, więc pozwoliłem sobie załączyć dwa pliki. Jeden Ramka BBB 5,0.cdr i drugi BAZA DANYCH.ods.
Dla przykładu w pliku ods (w 5 wierszu) magentą zaznaczyłem pola które ręcznie uzupełniłem w pliku cdr.
I tak do tej pory przygotowywałem, RĘCZNIE (wolno, nudno, monotonnie i DUŻO BŁĘDÓW :-) )
Chodzi mi o to, aby importując do Corela bazową ramkę, teksty na warstwie "do zmiany" zostały zamienione z danymi z pliku BAZA DANYCH z wiersza 9 (komórki jak w przykładzie zaznaczonym magentą), innym razem importując ramkę do innego pliku cdr, teksty podmienione zostały z pliku BAZA DANYCH z wiersza 10 itd.
Każdy wiersz jest osobnym plikiem cdr, np wiersz 5 to plik 11-12-10380.cdr, wiersz 9 to plik 12-01-10493.cdr, wiersz 10 to plik 12-01-10494.cdr itd. i dla tego do każdego pliku cdr trzeba wciągnąć dane z innego wiersza.

BAZA DANYCH.ods.zip
Pobierz Plik ściągnięto 445 raz(y) 14.84 KB

RAMKA BBB_5,00.cdr
Pobierz Plik ściągnięto 703 raz(y) 70.13 KB

 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.17 sekundy. Zapytań do SQL: 14