[Excel] Kopiowanie danych z przesunięciem

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Arcadias
Posty: 1
Rejestracja: śr lip 01, 2015 8:59 am

[Excel] Kopiowanie danych z przesunięciem

Post autor: Arcadias »

Witam.

Tworzę właśnie rozbudowany raport logistyczny w firmie, jednym z jego głównych atutów miała być automatyzacja procesów, ale tego problemu nie potrafię przeskoczyć. Aktualne raporty są trzy, a każdy z nich zbiera niemal te same dane, tyle że w różnych formach. Chciałbym, żeby po wypełnieniu jednego raportu, kolejny wypełniał się automatycznie, ale w kolejnych kolumnach - z przesunięciem. Dla przykładu dodaje załącznik: dwa skoroszyty (przypuszczamy, że raporty są dwa).

Makro miałoby wyglądać tak:

Dane z komórek H5:H14 (skoroszyt Raport 1) są sumowane, a ich suma zostaje wklejona do skoroszytu Raport 2, do komórki D5. Niby nic trudnego, ale to tylko część makra. Jak zobaczycie, w skoroszycie "Raport 1" jest przycisk "Generuj raport", do którego jest przypisane następujące makro:

Kod: Zaznacz cały

Sub Jeden()
Application.DisplayAlerts = False
ActiveSheet.Copy
ActiveWorkbook.SaveAs "C:\Raporty\Raport przyjęcia " & Format(Date, "yyyy-mm-dd")
ActiveWorkbook.Worksheets(1).Range("a1") = 0
    ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
Selection.Delete
 ActiveWorkbook.Save
ActiveWorkbook.Close
    Range("F5:K33").Select
    Selection.ClearContents
    Range("Q5:Q28").Select
    Selection.ClearContents
    Range("A37").Select
ThisWorkbook.Save
          If Err.Number = 1 Then MsgBox "Błąd. Raport został już wygenerowany", , "Błąd"
        If Err.Number = 0 Then MsgBox "Raport został wygenerowany pomyślnie", , "Potwierdzenie"
End Sub
Działa poprawnie - tak jak chciałem: zapisuje aktywny skoroszyt (w tym przypadku Raport 1) w osobnym pliku z wprowadzonymi wcześniej danymi, w formacie xlNormal, a jego nazwa zawiera aktualną datę. Dodatkowo, ze świeżo stworzonej kopii usuwa przycisk "Generuj raport", a w pliku macierzystym czyści tabelę z danych, dzięki czemu można tworzyć kolejny raport.

Chciałbym jednak, żeby oprócz tego dane były kopiowane do skoroszytu "Raport 2" tak jak pisałem powyżej. Dodatkowo, za każdym kliknięciem przycisku "Generuj raport" dane powinny być kopiowane do następnej kolumny, tak żeby nie nadpisywać poprzednich danych.

Szczerze mówiąc dopiero niedawno zacząłem przygodę z VBA i ledwo ogarniam podstawy, uczę się czytając poradniki i rejestrując makra, dlatego nie mam pojęcia jak się do tego zabrać. Gdyby nie fakt, że występuje przesunięcie danych, chyba nie byłoby problemu.

Z góry dziękuję za podpowiedzi i pozdrawiam.

Kod: Zaznacz cały

http://speedy.sh/2W4rC/Raport.xlsm
MS Office 2013 na Windows 7
ODPOWIEDZ