Cześć,
od razu chcę poinformować, że jestem totalnie zielony ;)
tworzę plik w którym w Arkusz1 mam wzór raportu w którym w odpowiednich polach zmieniają się dane na podstawie wybranego dnia, a następnie drukowany do PDF. W Arkusz2 mam bazę danych na podstawie której wypełniany jest raport w Arkusz1. Każdy dzień w bazie to osobna kolumna. Takich raportów jest do zrobienia w tym przypadku 128 szt..
Do sedna...
Żeby ułatwić sobie pracę teraz i w przyszłości wymyśliłem zrobienie czegoś na wzór korespondencji seryjnej. Raport ma listę rozwijaną z datami z bazy co automatycznie zmienia dane w raporcie. Wszystko fajnie działa ale ręczne drukowanie PDF dla każdego dnia to katorga, więc próbuję to zautomatyzować.
Udało mi się na podstawie poradnika na YouTube stworzyć makro które przyciskiem generuje mi PDF z odpowiednią nazwą, udało się też stworzyć makro które generuje serię plików PDF z odpowiednimi nazwami ale działa ono jedynie pobierając nazwy z wierszy w jednej kolumnie transponowanej z Arkusz2 do Arkusz3. Ideałem byłoby makro działające tylko na Arkusz2 i pobierające nazwy z wielu kolumn.
Poniżej kod:
Option Explicit
Sub Drukowanie()
Arkusz1.PrintOut Copies:=1
End Sub
Sub GenerowaniePDF()
Dim sciezka As String, nazwaPliku As String
sciezka = "C:\sciezka\do\pliku\"
nazwaPliku = Arkusz1.Range("H4").Value
Arkusz1.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sciezka & "Raport_" & nazwaPliku & ".pdf"
End Sub
Sub GenerujWszystko()
Dim i As Long, ileK As Integer
Application.ScreenUpdating = False
ileK = Arkusz2.Range("A1").Value
For i = 1 To ileK
Arkusz1.Range("H4").Value = Arkusz3.Range("A" & i + 1)
Application.StatusBar = Arkusz3.Range("A" & i + 1)
Call GenerowaniePDF
Next i
Application.ScreenUpdating = True
Application.StatusBar = ""
MsgBox "Raporty gotowe", vbInformation + vbOKOnly, "Komunikat"
End Sub
Sub GenerujWszystkoLadnie()
Dim i As Long, ileK As Integer
Application.ScreenUpdating = False
ileK = Arkusz2.Range("A1").Value
For i = 1 To ileK
Arkusz1.Range("H4").Value = Arkusz2.Range("A" & i + 1)
Application.StatusBar = Arkusz2.Range("A" & i + 1)
Call GenerowaniePDF
Next i
Application.ScreenUpdating = True
Application.StatusBar = ""
MsgBox "Raporty gotowe", vbInformation + vbOKOnly, "Komunikat"
End Sub
Makro GenerujWszystko działa korzystając z Arkusz3, nie jestem w stanie wykombinować jak w makro GenerujWszystkoLadnie określić wyszukiwanie nazwy z wiersza 1 zaczynając od kolumny C kończąc na 128 kolumnie.