• 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 PDF z taką samą nazwą co plik Excela (VBA)

Czyli wystarczy mała podmianka w kodzie

Prawie dwa lata temu napisałam artykuł, gdzie pokazywałam jak z pliku Excela wygenerować plik PDF i zapisać go pod taką nazwą, jak wartość wybranej komórki w arkuszu. Wszystko to za pomocą przycisku. Napisałam w tym celu makro, które szczegółowo omówiłam w tym artykule.

Niedawno zapytaliście mnie jednak, jak zrobić, aby wygenerowany plik nazywał się dokładnie tak samo, jak plik Excela, z którego powstał. Brzmi strasznie, ale w rzeczywistości jest prościutkie. Wymaga bowiem jednej małej modyfikacji w kodzie i ją właśnie opiszę w tym artykule.

Formatka wygląda identycznie, jak w poprzednim artykule:

Formatka

Formatka

Do dzieła!

Generowanie PDF z Excela – poprzedni kod

Dla przypomnienia wkleję tutaj kod, który będę teraz modyfikować. Oto on:

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

BTW: Powyższe makro jest przypisane do przycisku, co dokładnie opisałam we wspomnianym artykule.

Wystarczy nam jedna zmienna

Poprzednie makro pobierało nazwę klienta z komórki D3, która była nazwana jako Klient. Teraz jest nam to niepotrzebne. Zarówno ścieżkę dostępu do pliku i jego nazwę pobierzemy bowiem za pomocą innej właściwości. Usuńmy więc 3 linijki:

  • deklarację zmiennej Klient,
  • przypisanie do niej wartości,
  • i if-a, sprawdzającego wartość zmiennej Klient.

Ma powstać coś takiego:

Sub MojPDF()
 Dim Sciezka As String
 
 Sciezka = ThisWorkbook.Path & "\"

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

Modyfikacja zmiennej i nowa właściwość obiektu ThisWorkbook

Teraz zmodyfikujemy zmienną Sciezka. Do tej pory pobierała ona tylko ścieżkę dostępu do pliku Excela. Teraz pobierze tę ścieżkę, ale też nazwę pliku. W tym celu skorzystamy z właściwości FullName obiektu ThisWorkbook. Tak:

 Sciezka = ThisWorkbook.FullName

Zwraca ona niestety też rozszerzenie pliku, czyli np.:

C:\MalinowyExcel Zapisz PDF z taką samą nazwą co Excel.xlsb

Trzeba się tego pozbyć, bo w końcu chcemy PDF, a nie xlsb.

Usuń excelowe rozszerzenie pliku

A teraz pozbędziemy się rozszerzenia excelowego z naszej nazwy, czyli tego: .xlsb. Zrobimy to dopisując taki kod:

Sciezka = Left(Sciezka, Len(Sciezka) - 5)

W efekcie dostaniemy taką wartość zmiennej Nazwa:

C:\MalinowyExcel Zapisz PDF z taką samą nazwą co Excel

I to już prawie koniec.

Generowanie PDF z nazwą pliku Excela

Wykorzystamy teraz kod, który już wcześniej mieliśmy, tylko zamiast zmiennej Klient wstawimy zmienną Sciezka i usuniemy wystąpienie zmiennej Klient. Reszta jest OK.\

Całość wygląda tak.:

Sub MojPDF()
    Dim Sciezka As String, Nazwa As String
    
    Sciezka = ThisWorkbook.FullName
    Sciezka = Left(Sciezka, Len(Sciezka) - 5)
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Sciezka & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

A jeśli chcesz, aby plik PDF został zapisany dodatkowo z dzisiejszą datą – zajrzyj do tego wpisu.

Pamiętaj, aby zapisać gotowy plik z obsługą makr (*xlsm) lub binarny (*xlsb). Załączony do tego artykułu plik ma właśnie to drugie rozszerzenie.

 

Jeśli arkusz się brzydko drukuje – ustaw odpowiednie opcje drukowania. Polecam tutaj obszar wydruku i wpasowanie w strony.

A uruchamiając plik pamiętaj, aby włączyć makra.

 

 Tutaj znajdziesz plik do pobrania:

MalinowyExcel Zapisz PDF z taką samą nazwą co Excel.zip

 

I wersję wideo, gdzie pokazuję po kolei co zmienić w kodzie:

 

Powiązane produkty

    • Nagrywanie makr – dzięki tej lekcji dowiesz się jak w sprytny sposób nagrywać całkiem inteligentne makra

 

 

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 *