Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel - Usuwanie makra przez inne makro

JaroFon 19 Sep 2019 15:39 1194 22
  • #1
    JaroFon
    Level 23  
    Witam
    Mamy pytanie odnoście usuwania makra przez inne makro.
    Od początku. Mam poniższy kod który oczywiście działa popranie i robi dokładnie to co ma robić, czyli: kod na początku filtruje i tworzy pewną ankietę w arkuszu. Następnie arkusz z ankietą zostaje skopiowany i wklejona do nowego pliku Excel, następnie zapisany pod konkretną nazwą we wskazanym miejscu.

    Code: vbscript
    Log in, to see the code


    ...na końcu tego kodu są jeszcze wykonywane pewne czynności usuwania w nowym pliku Excel, a dokładnie te 5 linijek:

    Code: vbscript
    Log in, to see the code


    ...one mają za zadanie w nowo utworzonym pliku Excel usunąć: filtr, rozwijaną listę, przycisk CommandButton1, a na końcu otwiera ukryte kolumny i wiersze.
    I tu własnie moje pytanie, czy jest jakieś polecenie które mógłbym dodać w tym miejscu aby w nowo otwartym pliku dodatkowo usunąć jeszcze wszystkie makra?
  • #2
    adamas_nt
    Moderator of Programming
    JaroFon wrote:
    czy jest jakieś polecenie które mógłbym dodać w tym miejscu aby w nowo otwartym pliku dodatkowo usunąć jeszcze wszystkie makra?

    Zapisz jako... zwykły xlsx
    w ostateczności: Link patrz rozdział "Deleting All VBA Code In A Project"
  • #3
    JaroFon
    Level 23  
    Właśnie przed chwilą dostałem odpowiedź z innego źródła. Poniższy kod rozwiązuje sprawę i usuwa wszystkie makra :)

    Code: vbscript
    Log in, to see the code
  • #4
    JaroFon
    Level 23  
    Witam ponownie.
    Wracam do tematu bo potrzebuję pomocy. Temat dotyczy kontynuacji usuwania makra przez inne makro. Powyższy kod do usuwania makra wykorzystuje do tej pory. Jednak mam potrzebę aby w nowym pliku po usunięciu makra zostało wklejone nowe, inne makro. Dokładnie chodzi mi o wklejenie poniższego makra. Jak to mogę zrobić?

    Code: vb
    Log in, to see the code
  • Helpful post
    #5
    clubs
    Level 37  
    Witam @adamas_nt podał linka gdzie masz tam wstawianie procedury.
  • #6
    JaroFon
    Level 23  
    A moge poprosić o podpowiedź która to jest część z tego linku, bo mój angielski jest zerowy. Jak bym wiedział która to część to jutro posiedzę nad tym i spróbuję coś z tego poskładać

    Dodano po 10 [godziny] 8 [minuty]:

    Opanowałem to. Trochę sobie przetłumaczyłem stronkę i znalazłem kod którym wkleiłem nowe makro to nowego pliku, ostatecznie mój kod wygląda jak poniżej i działa wyśmienicie:

    Code: vb
    Log in, to see the code
  • #7
    clubs
    Level 37  
    JaroFon wrote:
    Opanowałem to

    I to się chwali :) pozdrawiam
  • #9
    JaroFon
    Level 23  
    @PRL dziękuję bardzo. Jeszcze nigdy nie miałem do czynienia z kodami które wykorzystują zewnętrzne plik .txt, ale teraz widzę mniej więcej w jaki sposób to działa. Jeżeli chodzi o główny kod makro to nie sądziłem że można go aż tak bardzo zminimalizować. Na pewno wykorzystam Twój kod jak ten mój który jest o wiele dłuższy :D
  • #10
    PRL
    Level 40  
    Zdradzisz dlaczego wybrałeś taką metodę programowania?
  • #11
    clubs
    Level 37  
    Oczywiście to co kolega @PRL zaproponował to jedna z możliwości, możesz również przesłać kod z aktywnego skoroszytu do innego bez "zewnętrznego" pliku.
  • #12
    JaroFon
    Level 23  
    PRL wrote:
    Zdradzisz dlaczego wybrałeś taką metodę programowania?


    Powiem tak, czy wybrałem takie programowanie? Raczej od początku tego sposobu się nauczyłem, ale nie nauczyłem się programować tylko nauczyłem się dostosowywać kody tak żeby działały i robiły to co chcę żeby zrobiły. Tak naprawdę ja nie potrafię od zera napisać jakiegoś skomplikowanego kodu, coś tam potrafię ale kończy się to tak że gdzieś mi dzwoni ale nie wiem gdzie. Podglądam kody które już posiadam staram się je przerobić i dostosować tak aby zaczęły działać i robi to co potrzebuję. Moja zabawa z Excelem i programowaniem zaczęła się z potrzeby, od lat pracuję jako planista i moja praca spowodowała że chciałem sobie ją ułatwiać i udogadniać. Zaczęło się od pierwszego mojego pliku który nazywał się "Kwestionariusz", pewnie kolega @adamas_nt będzie pamiętam, to On pomógł mi w moich początkach i to On napisał mi pierwszy program który z czasem zacząłem przerabiać i rozwijać, teraz mój główny plik jest tak potężny i potrafi zrobić wiele, niesamowicie udogadnia mi moją pracę. Niestety mój główny plik jest oparty na arkuszu Excel i cała moja ogromna baza jest wpisana w ten główny plik i jest on ostatecznie bardzo ogromny i niektóre jego funkcje dość długo działają, ale działają i jest mi ogromną pomocą w pracy. Już myślałem kiedy o przerobieniu mojego głównego pliku i zrobienie tak aby baza danych była trzymana na zewnętrznych plikach typu .txt, jednak nie wiem jak to się robi, jak już wspomniałem nie potrafię napisać skomplikowanego kodu, ale potrafię już gotowy tak przestudiować że ostatecznie dostosuję go do swoich potrzeb. Tak się wydaje że już od lat w tym siedzę ale nie nauczyłem się wszystkiego. A jeżeli chodzi o założenie tego tematu usuwania makra przez inne makro, temat założony już dawno temu i rozwiązanie używane było do tej pory, ale w tym tygodniu troszkę udoskonalałem to do czego był potrzebny kod do usuwania makra i potrzebowałem do nowo utworzonego pliku Excel z powrotem wkleić część makra który zostaje usunięty w całość i z pomocą @adamas_nt i @PRL kod ostatecznie wygląda jak poniżej i jest dla mnie wystarczający, robi dokładnie to co potrzebuję i dzięki @PRL jest zminimalizowany chyba już do całkowitego minimum:

    Code: vb
    Log in, to see the code
  • #13
    PRL
    Level 40  
    Quote:
    od początku tego sposobu się nauczyłem

    No ale dlaczego kodem tworzysz inne procedury? Dlaczego nie piszesz od razu kodu tam, gdzie powinien być?
  • #14
    JaroFon
    Level 23  
    Ten temat dotyczy pewnej funkcji, a dokładnie w moim plik bazowym generuję pewną listę, w tym przypadku jest to lista szkoleń. Po wygenerowaniu tej listy albo ją bezpośrednio drukuję albo generuję plik .pdf i ten plik wysyłam dalej do innych osób. Jednak niektóre z tych osób prosiły mnie o wysłanie pliku nie w .pdf tylko .xls(m) aby mogli sobie ją przetwarzać. Ponieważ nie mogę wysłać głównego pliku to zrobiłem wygenerowanie nowego pliku właśnie z tą listą szkoleń, ale po wygenerowaniu nowego pliku były w nim też te oryginalne makra z arkusza szkoleń które powodowało wywalanie błędów ponieważ miało odnośniki do innych makr których już nie było w nowym pliku, i narodził się ten temat dzięki któremu usuwam makra z nowego plika, a w tym tygodniu udoskonaliłem to i w nowym pliku dodałem pewne przydatne funkcje, w tym przypadku sortowanie. Hmm może jest inny na to sposób ale ja to tak wymyśliłem i tak zrobiłem :D

    Dodano po 5 [minuty]:

    PRL wrote:
    No ale dlaczego kodem tworzysz inne procedury? Dlaczego nie piszesz od razu kodu tam, gdzie powinien być?
    Nie pisze kodu tam gdzie powinien być bo początkowo tego pliku jeszcze nie ma
  • #15
    clubs
    Level 37  
    JaroFon wrote:
    Ponieważ nie mogę wysłać głównego pliku to zrobiłem wygenerowanie nowego pliku właśnie z tą listą szkoleń, ale po wygenerowaniu nowego pliku były w nim też te oryginalne makra z arkusza szkoleń które powodowało

    Na jakim 'offis' działasz? To generuj pliki 'xlsx' wtedy będą bez makr.

    ps. Ja pamiętam jak walczyłeś z "szychtownicą" :)
  • #16
    JaroFon
    Level 23  
    clubs wrote:
    Na jakim 'offis' działasz


    W pracy od jakiegoś czasu mam nowy komputer i mam Office 2010, w domu na PC i laptopie mam Office 365.

    clubs wrote:
    To generuj pliki 'xlsx' wtedy będą bez makr.


    No i tak było do tej pory, generowałem tylko plik .xlsx (w razie potrzeby generuję plik .xls dla osób które korzystają jeszcze ze starszych wersji Office 2003) i to mi wystarczyło, i ostatecznie wystarczyło tylko usunięcie makr z nowego pliku. Ale udoskonaliłem to i dodałem funkcję sortowania (dla potrzeby tego pliku) dlatego wróciłem do tematu jak dodać z powrotem makro. Dzięki Wam zrobiłem tak jak chciałem. Ostatecznie mam trzy opcje generowania nowego pliku, w formacie .xls, .xlsx i formacie .xlsm z dodanym makrem :D

    clubs wrote:
    ps. Ja pamiętam jak walczyłeś z "szychtownicą" :)

    Oj moja "Szychtownica" przeszła do tej pory już niejedną transformację, dziś jest bardzo rozbudowana i skomplikowana, ale dzięki niej moja praca to sama przyjemność :D Na chwilę obecną moja praca opiera się na dwóch głównych plikach, plik Bazowy (jego pierwotna wersja i nazwa to Kwestionariusz) który robi niesamowite rzeczy i Szychtownica no i wiele innych mniej skomplikowanych plików pomocniczych potrzebnych w mojej pracy
  • #18
    JaroFon
    Level 23  
    Moja główna aplikacja bazowa to można powiedzieć że to taki kombajn, służy do wielu rzeczy które robię na codzień w pracy, począwszy od bazy pracowników z ich danymi osobistymi, danymi pracowniczymi typu gdzie pracuje, na jakim stanowisku, na jakim oddziale, jakie ma kwalifikacje jakie powinien robisz szkoleni, daty szkoleń, badań lekarskich, i wiele innych danych, aplikacja robi przeróżnego typu listy, wykazy itp. Aplikacja w połączeniem ze systemem operacyjnym firmy w której pracuje ściąga dniówki wszystkich pracowników i odpowiednie je sortuj i przypisuje ewentualne nadgodziny, i wiele innych jeszcze funkcji. A kod z tego tematu jest dopełnieniem innego kodu z mojego pliku bazowego który służy do wygenerowania listy szkoleń jakie powinny być zrobioorne przez pracowników w konkretnym miesiącu, po prostu aplikacja kombajn, dzięki tej aplikacji moja praca to po prostu sama przyjemność
  • #19
    PRL
    Level 40  
    Skoro to baza, to dlaczego nie np. Akces, a Excel?
  • #20
    JaroFon
    Level 23  
    Nigdy nie pracowałem na Access i nie wiem jak to działa, z drugiej strony już mi proponowano pracę na Access ale nie mogłem bo w pracy na komputerze nie mam Accessa
  • #21
    JaroFon
    Level 23  
    Witam ponownie i znowu wracam do tematu.
    Jeżeli chodzi o temat usuwania wszystkich makr przez makro to wszystko zostało już wyjaśnione. Ale w trakcie pracy zauważyłem że po wygenerowaniu nowego pliku i usunięciu wszystkich makr i ewentualnym wklejeniu nowych zauważyłem że zostają w nim jeszcze w menadżerze nazw zakresy których też bym chciał się pozbyć w taki sam sposób, czyli makrem. jak to zrobić aby makrem usunąć wszystkie zakresy z menadżera? Próbowałem sobie pomóc nagraniem makra ale ten sposób pokazał jak usunąć zakres o konkretnej nazwie, a musiał bym to zrobić bez podawania nazw konkretnych zakresów bo w trakcie mojej pracy do zakresów mogę kiedyś coś dodać i makro usuwające musiało by to uwzględnić. Proszę o pomoc jak to zrobić

    Excel - Usuwanie makra przez inne makro
  • Helpful post
    #22
    clubs
    Level 37  
    Code: vbscript
    Log in, to see the code
  • #23
    JaroFon
    Level 23  
    Dziękuję, o to chodziło :)