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.

VBA Excel (2007) - Makro przypisujące instrukcje dot zakładki w innym pliku

20 Lut 2015 11:12 798 8
  • Poziom 8  
    Witam,

    od czasu do czasu próbuję cos tam w excelu podziałać i usprawnić - nie jestem programistą ale co nieco VBA już się samodzielnie nauczyłem.

    I natrafiłem na problem z którym nie umiem sobie poradzić i liczę na Waszą pomoc ew. podpowiedź.

    Mam plik w Excelu z makrem (nazwijmy go: plik1), za pomocą którego: otwieram inny plik Excela (niech się nazywa: plik2) i wykonuję na nim szereg czynności takich jak: formatowanie komórek, ustawianie filtrowania, wstawienie odpowiednich formuł w komórkach (np. sumy.czesciowe) itp., oraz wczytuje do tamtego pliku Excela jeszcze inne pliki jako nowe zakładki.

    Wszystko działa tak jak tego oczekuję.
    Chciałbym jeszcze aby w tym zewnętrznym pliku (plik2) do jego zakładek (SheetActivate) przypisać określone makro (konkretnie by filtrował zawartość tabeli w zakładce 2 w zależności od wartości wybranej komórki w zakładce 1).

    Niestety nie mogę tego zrobić w pliku2 "ręcznie" (czyli przypisać określone makro do SheetActivate) bo plik2 jest generowany z innego programu i nadpisywany (czyli regularnie mam nowy "surowy" plik2). Dlatego wszelkie działania na pliku2 są zautomatyzowane i robione za pomocą pliku1.

    Mam nadzieję, że jasno opisałem swój problem i liczę na poradę. ;)
  • Moderator Programowanie
    Wykorzystaj zdarzenie 'Thisworkbook' > 'SheetActivate' w plik2, wyłączając pierwszy arkusz (If Sh.name <> "zakładka1").
  • Poziom 8  
    Dzięki za zainteresowanie.
    Nie bardzo zrozumiałem. :(

    Chodzi mi o to by do pliku2 dopisać makro do SheetActivate. Później po zapisaniu pliku2 ma to działać np. gdy inny użytkownik otworzy plik2.
  • Pomocny post
    Poziom 40  
    Upewnij się, że poustawiałeś odpowiednio niski poziom zabezpieczeń i spróbuj czegoś takiego:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    PS. Dziwnym trafem wydaje się to nie działać w trybie debugowania, ale działa na normalnym pliku.
  • Poziom 8  
    Bardzo dziękuję. Działa! :)
    Teraz mogę pokombinować dalej. ;)

    Dodano po 6 [minuty]:

    Jeszcze przyszło mi do głowy jedno pytanie.
    Czy możliwe byłoby dodanie do pliku2 całej procedury z pliku1? (oczywiście z poziomu makra uruchomionego w pliku1)
  • Poziom 40  
    A gdzie masz tę procedurę w pliku 1?
  • Poziom 8  
    Mogłaby być jedną z procedur w module1 (w plik1), ale mogłaby być np. zapisana oddzielnie.

    Po prostu zamiast dopisywać poszczególne linie poleceń (w Twoim przykładzie: .InsertLines LineNum, " MsgBox " & DQUOTE & "Hello World" & DQUOTE). Pomyślałem, że dodałbym do pliku2 całą procedurę a w Twoim kodzie modyfikowałbym tylko cos w tym stylu:

    .InsertLines LineNum, " moja_procedura "
  • Pomocny post
    Poziom 40  
    To skopiuj sobie całą procedurę np. do jakiejś komórki albo do pliku tekstowego w formie:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    a z kodu zrób:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 8  
    Jeszcze raz dziękuję za pomoc. ;)
    Zabieram się do roboty i już nie marudzę.