ID tematu: 27891
 |
uruchomienie makra automatycznie po uruchomieniu pliku |
| Autor |
Wiadomość |
haller
Starszy Forumowicz

Pomógł: 2 razy Posty: 55
|
Wysłany: 2012-02-07, 19:44 uruchomienie makra automatycznie po uruchomieniu pliku
|
|
|
Hej.
Kolejne pytanie na dziś.
Jak automatycznie wywołać makro, dajmy na to z Zeszytu.1.xls z Arkusza1 o nazwie Makro1, ale bez konieczności klikania na arkusz?? |
|
 | ID posta:
147797
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Artik


Pomógł: 1277 razy Posty: 3463
|
Wysłany: 2012-02-07, 20:32
|
|
|
W module ThisWorkbook (Ten_Skoroszyt) wklej procedurę: | Kod: | Private Sub Workbook_Open()
Call Arkusz1.Makro1
End Sub | Przy każdym otwarciu skoroszytu uruchomi się makro przechowywane w module arkusza Arkusz1.
Artik |
|
 | ID posta:
147807
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Raffix
EXCELent Man


Pomógł: 3 razy Posty: 115
|
Wysłany: 2012-02-07, 20:48
|
|
|
Hmm... nie bardzo wiadomo o co Ci chodzi ponieważ opis w temacie różni się od nazwy tematu.
Jeśli chodzi Ci o to aby jakieś makro uruchamiało się zaraz po otwarciu skoroszytu to poszukaj na forum o metodzie Workbook_Open jest tego mnóstwo! A jeśli chcesz aby makro napisane dla jakiegoś arkusza wykonywało się w innym arkuszu to je po prostu skopiuj do odpowiedniego modułu arkusza. Lub ewentualnie utworz nowy moduł w skoroszycie, tam wklej makro i wtedy kiedy chcesz i w jakim arkuszu chcesz wywołujesz to makro poleceniem Call twoje_makro. Wszystko zależne jest od tego jakie to makro ma zadanie. |
_________________ Wiedza to nie nauka, wiedza to doświadczenie! |
|
 | ID posta:
147812
|
|
|
 |
haller
Starszy Forumowicz

Pomógł: 2 razy Posty: 55
|
Wysłany: 2012-02-08, 08:12
|
|
|
Dziękuję za odpowiedzi.
Artiku, a jak połączyć Twoją proceduję z procedują,
| Kod: | Private Sub Workbook_Open()
Sheets("Arkusz1").Activate
End Sub |
która ustawia Arkusz1 jako domyślny (startowy) przy uruchamianiu skoroszytu? |
|
 | ID posta:
147837
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Raffix
EXCELent Man


Pomógł: 3 razy Posty: 115
|
Wysłany: 2012-02-08, 19:08
|
|
|
Hmm... Ale nie wiem co Ci nie działa w tym kodziku Pewnie wpisałeś to w modułe arkusza wytnij to i wklej do modułu skoroszytu. Moduł skoroszytu jest w edytorze przeważnie na drzewku modułów pod modułami arkuszów i nazywa się This Workbook. Jak tak zrobisz to musi działać |
_________________ Wiedza to nie nauka, wiedza to doświadczenie! |
|
 | ID posta:
147933
|
|
|
 |
Artik


Pomógł: 1277 razy Posty: 3463
|
Wysłany: 2012-02-08, 20:47
|
|
|
Raffix, ja myślę, że działać to mu działa, tylko nie wie, że należy napisać tak: | Kod: | Private Sub Workbook_Open()
Worksheets("Arkusz1").Activate
Call Arkusz1.Makro1
End Sub |
haller, zwracam uwagę, że w powyższym kodzie użyto dwóch różnych odwołań do tego samego arkusza.
W linii | Kod: | | Worksheets("Arkusz1").Activate | odwołujemy się do Arkusz1 przez jego nazwę "zakładkową" (nazwa arkusza widoczna w Excelu).
W liniiodwołujemy się do Arkusz1 (a w zasadzie do makra w module tego arkusza) przez nazwę kodową, która jest widoczna tylko z poziomu edytora VBA (w drzewku projektów - po lewej stronie ekranu), która jest nadawana automatycznie. W powyższym przykładzie obie nazwy są zbieżne, więc nie widać różnicy. Ale po obejrzeniu obu miejsc o których mówię, przejdź do Excela i zmień nazwę arkusza na Ala ma kota. Teraz przejdź do edytora VBA i popatrz na drzewko projektów. Znajdziesz tam taki zapis: Arkusz1 (Ala ma kota), gdzie pierwsza nazwa jest nazwą kodową arkusza, a druga "zakładkową".
Ponieważ najczęściej nie zmieniamy nazwy kodowej, powyższy przykład można jeszcze zapisać w ten sposób: | Kod: | Sub Workbook_Open()
Arkusz1.Activate
Call Arkusz1.Makro1
End Sub | gdzie mamy odwołania tylko poprzez nazwę kodową.
Amen.
Artik |
|
 | ID posta:
147945
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
haller
Starszy Forumowicz

Pomógł: 2 razy Posty: 55
|
Wysłany: 2012-02-09, 20:14
|
|
|
Dziękuję wam obu! - zarówno za kody jak i część teoretyczną, która zawsze się przyda i to nie tylko mnie, ale i innym użytkownikom forum o miernej wiedzy z zakresu VBA.
Raz jeszcze dziękuję i zamykam temat.
Hej! :) |
|
 | ID posta:
148081
|
|
|
 |
|
|