• Zapisz się do newslettera, aby otrzymywać powiadomienia o nowościach na blogu
    Zapisując się, wyrażasz zgodę na przesyłanie Ci informacji o nowościach na tym blogu. Zgodę możesz w każdej chwili wycofać (szczegóły).

Zapisz plik jako PDF w tym samym folderze (VBA)

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.

Szkolenie on-line z Excela - więcej informacji...

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:

 

 

 

 

 

Spodobał Ci się ten artykuł?

Jeśli TAK, zapisz się na newsletter, aby otrzymywać powiadomienia
o o nowościach na blogu.

Zapisując się, wyrażasz zgodę na przesyłanie Ci informacji o nowościach na tym blogu. Zgodę możesz w każdej chwili wycofać (szczegóły).

Tagi , , , , , , , , , , , , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *