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.

Kopiuj wklej makro vba - Kopiowanie i wklejanie zakresu komórek

Tomek456 22 Paź 2013 22:01 7905 5
  • #1 22 Paź 2013 22:01
    Tomek456
    Poziom 9  

    Witam, bardzo serdecznie:)
    Makro wysypało mi się teraz trochę w innym miejscu. Niby prosta rzecz do zrobienia, tak mi się wydaje, skopiowanie zakresu pojedynczych komórek i wklejenie ich, żeby stały jedna obok drugiej w jednym wierszu zaczynając od komórki A1 (arkusz Excel). Makro w arkuszu Excel działa i wygląda mniej więcej tak:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Natomiast z poziomu SolidWorks wstawiłem Excel jako obiekt, próbuję przerobić makro, ale nie chce skopiować mi zakresu, na dziś dzień wygląda ono tak:
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    "Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False" - wyrażenie to oznacza, że wkleić musi komórki, ale zachowując tylko wartości

    Na pewno robię jakiś błąd. Dziękuję za pomoc, jeżeli ktoś go znajdzie. Z poziomu SolidWorks mam już bezpośredni dostęp do arkusza Excel, ale niestety makro nie kopiuje mi tego zakresu komórek, no i nie wkleja. Zaznacza tylko komórkę A1 i nic poza tym.

    0 5
  • Pomocny post
    #2 22 Paź 2013 23:42
    Maciej Gonet
    Poziom 31  

    Dobry wieczór,
    Nie znam się na SolidWorks, ale w kodzie VBA widzę przynajmniej dwa błędy:
    pierwszy w połączeniu Range("Q5...BJ5").Selection.Copy
    Powinno być rozbite na dwie instrukcje
    Range("Q5...BJ5").Select
    Selection.Copy
    Można też pominąć selekcję i pozostawić tylko: Range("Q5...BJ5").Copy
    Drugi błąd: Active.Worksheet.Paste
    Po pierwsze ta instrukcja jest niepotrzebna, bo wklejanie specjalne jest w następnej instrukcji. Poza tym jest niepoprawna składniowo, bo powinno być ActiveSheet bez kropki.
    Proszę sprawdzić, czy już będzie działać czy jeszcze coś jest źle.
    Pozdrowienia.

    0
  • #3 23 Paź 2013 12:12
    Tomek456
    Poziom 9  

    Sęk w tym, że w Excelu tak to działa, ale makro z poziomu SolidWorks przed każdą z tych linijek kodu, wydaje mi się, że potrzebuje sformułowania XlApp.WorkSheets(1)., ale mogę tylko tak myśleć, dlatego może to być niepoprawne.

    0
  • Pomocny post
    #4 23 Paź 2013 13:34
    Maciej Gonet
    Poziom 31  

    Może Pan użyć instrukcji With:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 23 Paź 2013 20:35
    Tomek456
    Poziom 9  

    To znaczy tak, pomysł z zastosowaniem pętli moim zdaniem bardzo dobry, na pierwszy rzut oka, niestety po przetestowaniu, żadnej reakcji makro nie zrobiło w arkuszu Excel, także dalej muszę kombinować, ale mimo wszystko dzięki:)

    Aczkolwiek jedną rzecz zrobił programik. Zaznaczył komórkę A1, czyli tą od której ma zacząć wklejanie, czyli dostęp do Excela ma, tylko z tym kopiowaniem sobie jeszcze nie radzi, może trzeba jeszcze dodać Active, żeby te komórki zaznaczył..

    0
  • #6 25 Paź 2013 12:14
    Tomek456
    Poziom 9  

    Witam bardzo serdecznie,
    Makro rozwiązałem trochę w inny sposób. Nie chciało skopiować całego zakresu, więc skopiowałem komórka po komórce w odpowiednie komórki i się udało:)
    Podziękowania dla Maciaja Goneta za dobry pomysł i poświęcony czas, temat uważam za zamknięty:)

    0