Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA Makro - Przejscie z excela 97/2003 na 2007/2013. Wklejanie arkusza.

szarlich 11 Paź 2013 10:07 3297 10
  • #1 11 Paź 2013 10:07
    szarlich
    Poziom 6  

    Witam,
    mam stare makro na kilka stron a4 napisane jeszcze pod windowsem 2000. W firmie wszystko przeszlo na nowe windowsy poza jednym komputerem. Makro niedziala pod nowym excelem i wykrzacza sie w momencie wklejania.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Blad (1004) jest przy activesheet.paste, mysle ze chodzi o obszar i wielkosc arkuszy bo od 2007 nastapila zmiana. Arkusz working jest do obliczen. niewiem co sie w nim dzieje bo jak wlaczam makro nie moge nawet myszka ruszyc, ale potem sa tworzone kolejno nowe arkusze o nazwie branej z jednej z komórek. Szukalem na forach i bylo kilka ciekawych rozwiazan ale u mnie niepasowaly. Prosze o pomoc ;)

    0 10
  • #2 11 Paź 2013 10:50
    adamas_nt
    Moderator Programowanie

    Wygląda OK. 1004 to zwykle błąd nazwy, braku obiektu, etc. Sprawdzałeś?

    0
  • #3 11 Paź 2013 10:58
    szarlich
    Poziom 6  

    Cześć.
    Dzięki za odzew.
    Właśnie podkreśla na żółto w edytorze
    activesheet.paste
    i ani rusz.

    0
  • #4 11 Paź 2013 11:22
    adamas_nt
    Moderator Programowanie

    A nie gubisz CutCopy mode przez to, że czyścisz komórki? Zmień kolejność... Spróbuj

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 11 Paź 2013 12:06
    szarlich
    Poziom 6  

    Dziekuje w tej czesci kodu pomoglo ;)
    Makro poszlo dalej ale kolejny blad wyskoczyl tym razem "6" - Overflow

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Podkresla Range("m1").

    0
  • #6 11 Paź 2013 12:27
    adamas_nt
    Moderator Programowanie

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    To proszenie się o kłopoty ;)
    Jeśli wstawiasz na końcu, zastosuj
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    i usuń te wszystkie selecty...

    Co do wyróżnionej linijki: Co masz przypisane do zmiennych? Możliwe błędy:
    1. Dzielenie przez zero
    2. Któraś z wartości nie jest liczbą, lub jest Empty

    Najlepiej się zabezpieczyć
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #7 11 Paź 2013 12:39
    szarlich
    Poziom 6  

    Czy o to chodzi? Jest wyżej w kodzie

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Wiec są zera.
    Co do selectow to nie mam az takiej wiedzy by to dotykać niestety makro jest mocno wiekowe ;]

    0
  • #8 11 Paź 2013 12:49
    adamas_nt
    Moderator Programowanie

    szarlich napisał:
    Jest wyżej w kodzie
    A niżej nie ma żadnego przypisania? Niemożliwe, żeby autor makra używał zera jako dzielnika.

    Zdaje się, że "ktoś" tu nieźle namieszał. Różnica wersji Excela nie ma z tym nic wspólnego ;)

    0
  • #9 11 Paź 2013 14:16
    szarlich
    Poziom 6  

    Moze cos od poczatku zle robie?
    Plik z makrem jest kopiowany z komputera z danymi na komputer z nowym excelem i windowsem. Zmiany wprowadzam bezposrednio w dwa pliki xls i xlsm po zapisz jako (myslalem na poczatku ze moze to wina formatu pliku).
    Teraz po ruszeniu makra od poczatku wrocil blad 1004

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Makro na drugim komputerze dziala.

    EDIT:
    Działa!
    Ale czasami sie wykrzacza znowu w tym samym miejscu lecz kiedy puszcze makro ponownie to dokancza prace. Rozwiazanie jakie zastosowalem to usuniecie 2 linii kodu zostawiajac samo:
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Mysle ze podstawowym problemem jest: a1:iv65536. Jako ze nowy excel ma wiecej wierszy i kolumn. Ale co ja tam wiem ;/

    0
  • #10 11 Paź 2013 22:28
    adamas_nt
    Moderator Programowanie

    szarlich napisał:
    Mysle ze podstawowym problemem jest: a1:iv65536
    I tu jesteś w błędzie. Zbiór zawiera się w zbiorze. W drugą stronę byłoby to bardziej prawdopodobne.
    Czasem zdarza się, że wcześniej autor nie przewidział rozrostu arkusza i zadeklarował zmienną odnoszącą się do Nr wiersza jako Integer, ale to raczej dotyczy wszystkich wersji.

    Najczęstszą przyczyną "wysypywania" się makr przy migracji, jest skopiowanie je w niewłaściwe miejsce. W kodzie arkusza i w module, niektóre rzeczy wyglądają nieco inaczej...

    W tym co opisujesz jakoś nie ma to zastosowania. W każdej wersji Excela kolejność działań:
    1. Kopiuj (Ctrl+c)
    2. Wyczyść zakres (Del)
    3. Wklej (Ctrl+v)
    nie zadziała. Ręcznie czy makrem nie ma znaczenia.

    0
  • #11 18 Paź 2013 13:49
    szarlich
    Poziom 6  

    Ostateczne rozwiazanie problemu:

    Po usunieciu linii kodu makro zaczelo dzialac (wczesniej robilo jedna operacje i stawalo, operacji jest czasem kilkaset wiec bylo by to klopotliwe by za kazdym razem je wlaczac). Ale ostatnio chcialem je sprawdzic na innych komputerach nie tylko na moim i nawet niezaczelo nic liczyc juz na poczatku sie wykrzaczalo.
    Powod jest bardzo kuriozalny. Chodzi o personalizacje pulpitu w windowsie. Ja zawsze uzywam klasycznego windowsa bo jest szybszy (czyli wyglad ten sam co mial tworca makra 10-15 lat temu). Reszta uzywa przekoloryzowanego win7-8 czy innego padla.

    Makro bylo pisane metoda click, copy paste, wiec miedzy windowsami zaszla jakas zmiana przy klikaniu miedzy okienkami i sposobem zapisu go za pomoca vba (albo znowu cos mieszam).

    W kazdym razie ostatecznie rozwiazane. Moze sie to komus przyda ;)

    Temat do zamkniecia.

    0