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

Zapisz plik jako PDF w tym samym folderze (VBA)

$
0
0

Czyli zapisywanie pliku do PDF przyciskiem

Chodzi o to, że mamy plik w Excelu, np. ofertę dla klienta, i chcemy ją zapisać na dysku jako plik PDF. Jest to bardzo prosta czynność, którą spokojnie możemy wykonać ręcznie kilkoma kliknięciami myszki. Natomiast, gdy takich ofert generujemy sporo – zaoszczędzenie nawet tych kilku kliknięć może się okazać zbawienne.

I my właśnie te kilka kliknięć zaoszczędzimy dzięki prostemu makru: po kliknięciu przycisku drukowania, Excel stworzy plik PDF, który zapisze w tym samym katalogu, co sam jest i nazwie go tak, jak nazwa klienta.

Formatka będzie prosta i tak na prawdę nie ma ona kompletnie żadnego znaczenia. I tak będziemy zapisywać do PDF arkusz, czyli ważniejsze będą tutaj Twoje ustawienia wydruku danego arkusza. Ja drukuję obszar wydruku, który mieści się na jednej stronie, jest logo, data wydruku i wyśrodkowanie w poziomie:

Formatka

Formatka

To, co jest istotne, to nazwanie komórki D3 jako Klient. Po tej nazwie bowiem będziemy przywoływali klienta w kodzie VBA.

A sam kod można w dużej mierze nagrać. Konkretnie zapisywanie pliku jako PDF. Po nagraniu otrzymamy taki fragment kodu:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
 "C\Users\....\MojPDF.pdf", _
 Quality:=xlQualityStandard, _
 IncludeDocProperties:=True, _
 IgnorePrintAreas:=False, _
 OpenAfterPublish:=False

I ścieżka dostępu w nim zawarta będzie stała. My chcemy dynamiczną, w zależności od położenia naszego Excela na dysku. To będzie więc do zmiany.

Do zmiany będzie również nazwa samego PDF’a. Obecnie też jest stała (MojPDF.pdf), a my chcemy, by plik nazywał się tak, jak klient z komórki D3 (nazwana jako Klient).

Parametryzowanie kodu

Będziemy potrzebowali dwóch zmiennych: ścieżka i klient. Obie będą tekstowe i umieszczę je w procedurze MojPDF.

Sub MojPDF()
 Dim Sciezka As String, Klient As String
End Sub

Ścieżka to będzie ścieżka pliku Excela, w którym obecnie się znajdujemy, a klient to wartość komórki o nazwie Klient w aktywnym arkuszu (koniecznie musisz ją nazwać, ponieważ inaczej kod się wykrzaczy):

 Sciezka = ThisWorkbook.Path & "\"
 Klient = ActiveSheet.Range("Klient").Value 

Tak na prawdę pobranie tych danych to połowa sukcesu. Można jeszcze dorzucić sprawdzanie, czy user wpisał nazwę klienta. Jeśli tego nie zrobił, możemy  narzucić mu jakąś nazwę, np. ambitne: “Klient” ;). Oczywiście pomysłów na to zabezpieczenie może być wiele (np. wyskakująca tabliczka z informacją, że nie wpisał klienta i koniec makra). Ja ograniczę się tutaj do wersji najprostszej:

If Klient = "" Then Klient = "Klient"

Teraz wystarczy tylko odpowiednio połączyć zmienne z kodem nagranym przez rejestrator – zamiast sztywnej ścieżki dostępu podpinamy naszą i łączymy ją z nazwą klienta:

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

Całość wygląda 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

Ostatnia instrukcja: OpenAfterPublish:=True oznacza, że PDF zostanie otwarty zaraz po utworzeniu. Jeśli tego nie chcesz – zmień to na OpenAfterPublish:=False.

Przypisywanie makra do przycisku

Teraz kwestia podpięcia makra do przycisku. Ja lubię przyciski obrazkowe, dlatego na mojej formatce widzicie obrazek, natomiast można oczywiście podpiąć do standardowego formantu formularza (opisywałam to tutaj, tylko wybierałam suwak, a nie przycisk).

Aby przypisać makro do obrazka, czy przycisku:

1. umieść obrazek/przycisk w arkuszu

2. kliknij na niego prawym przyciskiem myszy i…

3. wybierz opcję Przypisz makro

Przypisywanie makra do przycisku cz.1.

Przypisywanie makra do przycisku cz.1.

4. następnie z listy w okienku Przypisywanie makra wybierz to makro, które chcesz uruchomić po kliknięciu na ten obrazek/przycisk.

Przypisywanie makra do przycisku cz.2.

Przypisywanie makra do przycisku cz.2.

I gotowe!

Teraz, jak naciśniesz ten obrazek/przycisk, zostanie uruchomione nasze makro i aktywny arkusz zapisany jako PDF .

Plik do pobrania (pamiętaj o włączeniu makr)

MalinowyExcel Zapisz PDF w tym samym katalogu co Excel dw.xlsm

I wersja wideo wpisu:

 

 

 

 

 


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