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.

Excel VBA - Jak makrem podmienić inne makro

10 Lis 2015 14:41 969 4
  • Poziom 40  
    Dawno temu (jak dobrze pamiętam) był podobny wątek na elektrodzie ale nie mogę go znaleźć. Jeżeli ktoś wie niech mnie nakieruję - choć wolałbym uzyskać odpowiedź w moim wątku.

    Przekazałem do użytkowania plik excela z makrami - w "środku" paręnaście procedur.
    Okazało się że jedna z procedur, powiedzmy o nazwie babelki [Sub babelki()] zawiera błąd.
    Nie jestem "uprawniony" by w chwili obecnej otrzymać ten plik i poprawić go ręcznie ze względu na wprowadzone w arkuszach dane (nawet bym nie chciał wiedzieć co tam jest :) ).

    Nie jestem też w stanie bieżącemu użytkownikowi/użytkownikom wytłumaczyć co ma/mają zrobić (brak znajomości VBA i skomplikowany kod procedury)
    Dodatkowo przez nieodpowiednie wprowadzenie poprawek można narobić jeszcze więcej szkody, więc to odpada.

    I teraz pytanie główne:
    Jak za pomocą makra w innym pliku excela "podmienić" całą procedurę z jednego pliku w drugim pliku (na marginesie dodam że makra w docelowym pliku może być zahasłowane ale hasło znam - bo moje :)

    Innymi słowy umieszczam skoroszyt z poprawną procedurą - babelki w tym samym katalogu co skoroszyt z uszkodzoną procedurą. Uruchamiam ten nowy skoroszyt włączam przycisk "aktualizuj" i błędna procedura zostaje nadpisana w drugim pliku.
  • Pomocny post
    Poziom 39  
    A może spróbuj inaczej.
    Daj użytkownikowi swój plik excel-a z makrem do importu arkuszy z danymi z jego pliku wg tego rozwiązania:
    https://msdn.microsoft.com/en-us/library/office/ff844793.aspx

    Wg mnie (ale to tylko gdybanie) przy zapisywaniu kodu źródłowego makra jest on translatowany do kodu pośredniego i raczej ciężko to widzę, że część kodu działa (ten co robi import) a część podmieniasz.. ale to tylko moje gdybanie.
  • Pomocny post
    Moderator Programowanie
    Chodzi chyba o Link
    Trzeba włączyć referencje do 'Microsoft Visual Basic for Applications Extensibility 5.3'
    oczywiście
    Cytat:
    You can add the reference programmatically with code...


    Edit: O, ktoś ma lepszy refleks... again ;)
  • Poziom 40  
    :arrow: mickpr, Z jednej strony można tak jak piszesz: podmienić dane w arkuszach. Jednak ponieważ dane mogą być "porozsypywane" po różnych arkuszach skoroszytu i mogą zajmować różną ilość wierszy i kolumn stwierdziłem, że to będzie karkołomne. Łatwiej by było gdyby można było podmienić jedną procedurę (wiadomo gdzie jest/w którym module - a może nawet można by było podmienić tylko trzy linie kodu tej procedury) i by było z głowy, bez skakania po arkuszach. Dlatego też tutaj moje pytanie o poprawę kodu makra innym makrem. ale dzięki za zainteresowanie i przedstawioną sugestię.

    :arrow: JRV, adamas_nt Panowie, dziękuję za nakierowanie na wiedzę i przykłady. Niestety nie jestem biegły w "tubylczych" językach więc trochę mi zajmie przetransponowanie tego na język wyższej kultury :) Niemniej zaczynam testy działania poszczególnych procedur bo wg mojego ułomnego rozumienia tego języka zamieszczone tam kody mają ciekawe możliwości.
    O wynikach (a bardziej o potknięciach) będę na bieżąco informował. :)