[Excel] Kopiowanie danych z przesunięciem
: śr lip 01, 2015 9:01 am
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:
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.
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
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