Quantcast
Channel: Malinowy Excel
Viewing all articles
Browse latest Browse all 291

Zapisz plik jako PDF z dzisiejszą datą w nazwie (VBA)

$
0
0

Czyli trochę o tekstach i datach w VBA

Jakiś czas temu, w tym wpisie, opisywałam makro, które zapisywało plik Excela jako PDF w tym samym katalogu, co ten plik Excela. Samo zapisywanie jako PDF sztuką nie było – można to sobie nawet nagrać 😉 – jednak już określenie miejsca zapisu pliku stanowiło większe wyzwanie.

Dziś z kolei rozbuduję to makro tak, aby jeszcze zapisywało ów PDF z nazwą zawierającą dzisiejszą datę. Albo tylko miesiąc, jak kto woli – metoda będzie taka sama.

Wynik

Wynik

Poprzednie rozwiązanie (dokładnie opisałam je tutaj, łącznie z tworzeniem nowego modułu), które zapisywało plik w tym samym folderze, pod nazwą zawierającą nazwę klienta, wyglądało tak:

Sub MojPDF()
    Dim Sciezka As String, Klient As String
    
    Sciezka = ThisWorkbook.Path & "\"
    Klient = ActiveSheet.Range("Klient").Value

    If Klient = "" Then Klient = "Klient"
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Sciezka & Klient & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

Teraz tylko trochę je zmodyfikujemy. Modyfikacja będzie polegała na dodaniu zmiennej NazwaPliku, która będzie przechowywała ciąg tekstowy oznaczający nazwę pliku oczywiście. Użyję tej zmiennej po to, aby kod był bardziej czytelny. Linijka z deklaracjami zmiennych wygląda więc teraz tak:

Dim Sciezka As String, Klient As String, NazwaPliku As String

Następnie trzeba określić wartość nowej zmiennej, czyli ustalić, jak ma się nazywać plik. To, że nazywa się jak klient jest OK, więc zostawiam. Dodam natomiast dzisiejszą datę. Posłuży mi do tego funkcja Date. Jest to visualbasicowy odpowiednik excelowej funkcji DZIŚ.

Dodatkowo, żeby data została odpowiednio sformatowana (chcę, aby wyświetlony był najpierw rok, potem miesiąc a na końcu dzień, bez żadnych separatorów) – wrzucę ją do funkcji Format. I znów – jest to visualbasicowy odpowiednim excelowego TEKSTu. Ten fragment kodu wygląda tak:

NazwaPliku = Sciezka & Klient & Format(Date, "yyyymmdd") & ".pdf"

Drugim argumentem funkcji Format jest format naszej daty. Jeśli chcesz ją wyświetlić w jakiś inny sposób – tutaj jest miejsce na modyfikację. MOżesz np. wyświetlić tylko miesiąc i wtedy wpiszesz: “mm” itd.

Na koniec to już tylko podstawienie naszej nazwy do fragmentu generującego PDF. Całość kodu wygląda tak:

Sub MojPDF()
     Dim Sciezka As String, Klient As String, NazwaPliku As String
     
     Sciezka = ThisWorkbook.Path & "\"
     Klient = ActiveSheet.Range("Klient").Value
    
     If Klient = "" Then Klient = "Klient"
     
     NazwaPliku = Sciezka & Klient & Format(Date, "yyyymmdd") & ".pdf"
     
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
     NazwaPliku, _
     Quality:=xlQualityStandard, _
     IncludeDocProperties:=True, _
     IgnorePrintAreas:=False, _
     OpenAfterPublish:=True
End Sub

Pamiętaj koniecznie, aby plik z tym makrem zapisać jako plik z obsługa makr, czyli xlsm lub xlsb.

I to tyle! Mam nadzieję, że przyda Ci się zaprezentowana rozwiązanie. Jeśli znasz kogoś, komu też może się przydać – mam do Ciebie gorącą prośbę: udostępnij proszę mu/jej ten wpis mailem, na Facebooku czy w Messengerze. Razem będziemy szerzyć excelową wiedzę i pokażemy, że nie taki Excel straszny ;).

 

I plik xlsm  do pobrania (pamiętaj o włączeniu makr!):

MalinowyExcel VBA Zapisz plik jako PDF z dzisiejszą datą w nazwie dw.zip


Viewing all articles
Browse latest Browse all 291

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra