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

excel VBA - Kopiowanie danych z innego pliku - co tu nie gra??

uklad_dw 04 Dec 2012 21:51 7656 8
  • #1
    uklad_dw
    Level 9  
    Witam
    Męczę się już kolejny dzień, nie wiem co zmienić w tym kodzie aby Dane z pliku "A" w którym jest tabela z danymi (A1:M30) - wiele komórek scalonych, kolorowa i w ogóle no i dane oraz formuły.
    Problem w tym, że formuła kopiuje tylko do pierwszego arkusza a di tego wyskakuje komunikat "subscript out of range" a ja chciałbym kopiować do arkusza w którym jest button "pobierz dane"
    Code: vbscript
    Log in, to see the code


    Dodano po 15 [minuty]:

    Witam

    coś mi tu nie gra.....chyba wiem co...coś namieszałem w tym kodzie, że teraz nawet nie kopiuje do pierwszego arkusza tylko otwiera plik;/ i już nie wiem nawet jak wrócić do wersji gdzie kopiowało

    Proszę umieszczać kod w znacznikach syntax. Opcja Listing kodu. [adamas_nt]
  • #2
    adamas_nt
    Moderator of Programming
    No jest kilka kwiatków. Nazwa procedury ze spacją, nieprawidłowe odwołanie do skoroszytu. Sprawdź:
    Code: vbscript
    Log in, to see the code
    Oczywiście "skoroszyt z makrem.xlsm" istnieje i jest otwarty.
  • #3
    uklad_dw
    Level 9  
    no ok kopiuje...ale dlaczego tworzy się nowy arkusz i do niego kopiuje a nie do aktywnego arkusza??? Takich buttonów będę miał w całym skoroszycie chyba z 10 więc albo będzie kopiowało do aktywnego skoroszytu albo wskazanego a nie tworzenie się nowego;/ i to jest teraz dla mnie problem;/
  • #4
    adamas_nt
    Moderator of Programming
    uklad_dw wrote:
    no ok kopiuje...ale dlaczego tworzy się nowy arkusz i do niego kopiuje a nie do aktywnego arkusza?
    Takie polecenie napisałeś :)
    Quote:
    Sheets(wkb.Sheets(1).Name).Copy Before:=Workbooks("skoroszyt z makrem.xlsm").Sheets(2)
    Wygląda na to, że piszesz po chińsku, nie znając chińskiego :)

    Jest takie narzędzie w Excelu o nazwie "rejestrator makr". Niemal wszyscy, naukę VBA rozpoczynali od nagrywania. Otwórz sobie oba pliki, włącz rejestrator, nagraj wszystkie czynności i koniecznie przeanalizuj nagrany kod. Najlepiej uruchomić takie makro krokowo, przy pomocy klawisza [F8].

    Da Ci to więcej niż nasze "mądrości" ;) Spróbuj...
  • #5
    uklad_dw
    Level 9  
    Udało się
    zrobiłem coś takiego, ponieważ przy każdym buttonie określam zakres kopiowanego arkusza.

    A jak wyłączyć pytanie o zapisanie danych w schowku??

    pozdr

    Code: vbscript
    Log in, to see the code
  • #6
    wywyż
    Level 9  
    Dzień dobry!
    Borykam się z podobnym problemem. Też od dłuższego czasu nie potrafię sobie z tym poradzić. Co gorsza raz działa, a raz nie! Tzn. U mnie za którymś razem wywołania makra wyskakuje błąd związany z procedurą Paste w Waroksheets. U innych użytkowników błąd jest cały czas i za każdym razem wywołania się pojawia.

    Co chciałem osiągnąć pisząc to makro (a raczej przerabiając to co znalazłem w sieci):
    - mam dwa skoroszyty: Admin.xls i kk_User.xls
    - w pliku kk_user.xls zaraz po otwarciu wyskakuje UserForm, który po wypełnieniu zapisuje wprowadzone dane do arkusza("KK")
    - w pliku Admin.xls mam arkusz KK_User do którego mają się skopiować wszystkie wartości, które wprowadza użytkownik w skoroszycie User
    - skopiowanie danych odbywa się przy zamkniętym skoroszycie user.xls

    Nie udało mi się osiągnąć:
    - przy kopiowaniu metodą getValue trwało to bardzo długo, dlatego może być poprzez otwórz user.xls -> skopiuj dane -> zamknij kk_user.xls wklej w odpowiednie miejsce
    - jak otwiera się kk_user.xls to wyskakuje userform, nie potrafię tego wyłączyć (a wtedy możnaby dojść do perfekcji żeby nie było nic widoczne)
    - jak już kod zadziała, to kopiuje poprawnie, we właściwe miejsca itp, itd. więc dla mnie super, ale wykładam się na błędach, których nie potrafię obejść...
    KOD:
    Code: vbscript
    Log in, to see the code
    [/code]
  • #7
    JRV
    VBA, Excel specialist
    Witam
    wywyż wrote:
    Selection.Copy 'kopiuje
    Application.CutCopyMode = False

    Wątpię, że będzie to wkleit gdzies...
  • #8
    wywyż
    Level 9  
    Po skopiowaniu zakresu gdy następowało zamknięcie skoroszytu kk_user.xls wyskakiwało pytanie czy dane skopiowane do schowka mają być dostępne dla innych programów. Znalazłem w sieci, że jak wrzucę właśnie ten zapis to pytania nie będzie...
    Ale mimo wszystko, jak już makro zadziała, to dane się kopiują... (więc nie rozumiem tej uwagi...)
  • #9
    adamas_nt
    Moderator of Programming
    1. Następnym razem rozpocznij nowy wątek.
    2.
    wywyż wrote:
    jak już makro zadziała, to dane się kopiują
    Jakim cudem?

    Kolejność działań:
    1. Open (po otwarciu skoroszyt jest aktywny)
    2. Wybranie arkusza - Sheets().Select
    3. Kopiowanie - Range().Copy
    4. Wybranie skoroszytu docelowego - Workbooks().Activate
    5. Wybór arkusza docelowego - Sheets().Select
    6. Wybór lewej, górnej komórki (lub całego zakresu) Range().Select
    7. Paste
    8. Wyłączenie trybu i opróżnienie schowka CutCopyMode = False
    9. Zamknięcie pliku źródłowego Workbooks().Close SaveChanges:= False

    Kopiowanie przez "select'owanie", tylko jeśli razem z formatami komórek. Jeśli tylko wartości, "kopiuj" zwykłym przypisaniem. Np
    Code: vbscript
    Log in, to see the code