Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] αποθήκευση ως pdf (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/3451-apothikeysi-os-pdf.html)

rmaria 05-12-14 16:24

αποθήκευση ως pdf
 
καλησπέρα σας,
θα ήθελα να κάνω μία ερώτηση, πως μπορώ να αποθηκεύσω με vba σε μορφή pdf με όνομα αρχείου τον αριθμό του τιμολογίου σε έναν συγκεκριμένο φάκελο.
Ευχαριστώ πολύ.

Spirosgr 05-12-14 18:04

Καλησπέρα
Πλήρως παραμετροποιήσιμος κώδικας για αποθήκευση ως PDF
μιας περιοχής ενός φύλλου Excel.

Κώδικας:

Sub SaveFileAsPDF()
    Dim SavePath As String, FolderName As String
    Dim UName As String, WhereToSave As String
    Dim PrintRange As Range, FileName As Range

    Set PrintRange = Sheet1.Range("myPrintRange")'Όνομα περιοχής που θα εκτυπωθεί
    Set FileName = Sheet1.Range("myInvNumber")'Όνομα περιοχής που περιέχει Αρ. Τιμολογίου
   
    UName = "Spirosgr"'Όνομα χρήστη
    WhereToSave = "Desktop"'Σημείο υπολογιστή που θα αποθηκευθεί
    FolderName = "INVBackUp"'Όνομα φακέλου αποθήκευσης
   
    SavePath = "C:\Users\" & UName & "\" & WhereToSave & "\" & FolderName
   
    PrintRange.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
                                  SavePath & "\" & FileName & ".pdf", Quality:= _
                                  xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                                  OpenAfterPublish:=False
End Sub

Αλλάξτε αν θέλετε και το xlQualityMinimum με το xlQualityStandard
για διαφορετική ποιότητα στο PDF
Όπου Sheet1. το κωδικό όνομα του φύλλου.
Όλες οι ονομασίες και οι παράμετροι πρέπει να ακολουθούν τους κανόνες ονομασίας
Παράδειγμα:
Δεν μπορείτε να ονομάσετε τον φάκελο αποθήκευσης INVBackUp/2014 αλλά
μπορείτε να τον ονομάσετε INVBackUp-2014

rmaria 06-12-14 10:19

Σας ευχαριστώ πολύ για άλλη μία φορά για την βοήθεια.

Spirosgr 06-12-14 10:53

Να 'σαι καλά!

Μια διευκρίνηση:
Σχετικά με το xlQualityMinimum και το xlQualityStandard.
Δεν έχει να κάνει με την έννοια, ποιότητα εκτύπωσης, καλύτερη ή χειρότερη, ως εμφάνιση του αρχείου PDF, όπως ένα Draft αρχείο, σε μια εκτύπωση σε χαρτί, αλλά πρόκειται, για τον όγκο του αρχείου.
Τα αρχεία με QualityMinimum, είναι πιο «ελαφρά» και έτσι
μπορούν να δημοσιευθούν στο internet ή να σταλούν ως email (για παράδειγμα) ευκολότερα.
Αν δεν προορίζεται η χρήση του αντιγράφου για δημοσίευση, τότε χρησιμοποιήστε QualityStandard.

rmaria 14-12-14 12:02

Καλημέρα. Ευχαριστώ πολύ για τις πληροφορίες. Το ήθελα για αποστολή σε email, άρα το αφήνω όπως είναι.
Με εκτίμηση.

jockey17 17-12-14 07:38

Καλημέρα στην παρέα του φόρουμ,
Με αφορμή την παρούσα ανάρτηση για αποθήκευση δηλαδή κάποιου φύλλου εργασίας σε pdf, θέλω να ρωτήσω πως θα μπορούσε κανείς να δημιουργήσει διαφορετικά pdf εάν το συγκεκριμένο φύλλο έχει αλλαγή σελίδων και το επιθυμητό είναι να δημιουργηθεί ξεχωριστό pdf αρχείο για κάθε σελίδα/ες όταν υπάρχει pagebreak.

Φιλικά
Δημήτρης

Spirosgr 17-12-14 17:46

Καλησπέρα
Στο ενεργό φύλλο κάνουμε προεπισκόπηση.
Ας υποθέσουμε ότι δημιουργούνται x σελίδες για εκτύπωση.
Αν οι κεφαλίδες στηλών είναι στην πρώτη γραμμή,
αυτές θα επαναληφθούν σε όλα τα pdf αρχεία.
Τα pdf αρχεία θα αποθηκευτούν σε φάκελο που θα ορίσουμε και
το όνομα τους θα είναι "κάτι" συν τον αριθμό σελίδας (1 έως x)

Κώδικας:

Sub SaveFileAsManyPDFasPages()

    Dim SavePath As String
    Dim FolderName As String
    Dim UName As String
    Dim WhereToSave As String
    Dim FileName As String
    Dim PrintRange As Range
    Dim HorizBR As Integer
    Dim VertBR As Integer
    Dim i As Integer
    Dim TotalPages As Integer

    Set PrintRange = Sheet1.Range("xPrintArea") 'Όνομα περιοχής εκτύπωσης

    HorizBR = ActiveSheet.HPageBreaks.Count + 1
    VertBR = ActiveSheet.VPageBreaks.Count + 1
    TotalPages = HorizBR * VertBR ' Σύνολο σελίδων οριζόντια και κάθετα
    UName = "Spirosgr" 'Όνομα χρήστη
    WhereToSave = "Desktop" 'Σημείο υπολογιστή που θα αποθηκευθεί
    FolderName = "myFolderName" 'Όνομα φακέλου αποθήκευσης
    FileName = "myFileName" 'Όνομα που θα έχει το αρχείο pdf
    'Το όνομα αυτό θα είναι myFileName1, 2, 3 ...κλπ όσες είναι οι σελίδες

    SavePath = "C:\Users\" & UName & "\" & WhereToSave & "\" & FolderName

    Application.PrintCommunication = False

    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$1" 'Γραμμές που θα επαναληφθούν στον τίτλο
    End With
    Application.PrintCommunication = True

    For i = 1 To TotalPages
        PrintRange.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
                                      SavePath & "\" & FileName & i & ".pdf", Quality:= _
                                      xlQualityMinimum, IncludeDocProperties:=False, IgnorePrintAreas:=True, _
                                      From:=i, To:=i, OpenAfterPublish:=False
    Next i
   
End Sub


jockey17 17-12-14 21:04

Σπύρο να είσαι καλά.
Σε ευχαριστώ για άλλη μία φορά για την ανταπόκριση σου.

Φιλικά
Δημήτρης

elias41 22-12-20 14:27

Καλησπέρα κι από εμένα.
Εγώ χρησιμοποιώ την παρακάτω συνάρτηση για να βγάζω σε .pdf τα τιμολόγια.
Θέλω όμως το όνομα εξαγωγής να είναι της μορφής TΠΥ (αριθμός τιμολογίου)-(ημερομηνία τιμολογίου).
ο αριθμός τιμολογίου είναι στη στήλη V9 και η ημερομηνία σε μορφή (22/12/2020) στη στήλη Ρ9. Στο αρχείο πρέπει να γίνει μετατροπή των "\" σε "." προφανώς.
Τι πρέπει να προσθέσω στο vba παρακάτω;

Sub SaveAsPDFOptions()

Dim saveLocation As String
saveLocation = "G:\..............\................\2020\antigrafo .pdf"

'Example using all the options
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=saveLocation, _
OpenAfterPublish:=True, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
Quality:=xlQualityStandard, _
From:=1, To:=1

End Sub

ChrisGT7 22-12-20 15:32

Καλησπέρα Ηλία,

Δοκίμασε την παρακάτω ακολουθία στη μεταβλητή saveLocation:
saveLocation = "G:\..............\................\2020\ΤΠ " & Range("V9").Value & "-" & Format(Range("P9").Value, "(dd.mm.yyyy)") & ".pdf"


Η ώρα είναι 18:30.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2