Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Εκτύπωση] Εκτύπωση φύλλου excel σε pdf (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4986-ektiposi-filloy-excel-se-pdf.html)

skomat 24-08-18 15:29

Εκτύπωση φύλλου excel σε pdf
 
Καλησπέρα ομάδα. Ένα φύλλο excel (η καλυτερα μια περιοχη ενος φυλλου), μπορεί να εκτυπωθεί- αποθηκευτεί σε μορφή pdf μέσω μακροεντολης, σε ενα προκαθορισμενο σημείο??

kapetang 24-08-18 15:54

Αλέξανδρε δοκίμασε τον κώδικα:

Κώδικας:

Sub SaveAsPDF()
    'Αποθηκεύει σε Pdf το ενεργό φύλλο
    Dim rng As Range, sPath As String
    On Error GoTo errHandler
    Set rng = ActiveSheet.UsedRange
   
    ' Η αποθήκευση γίνεται στο φάκελο του βιβλίου εργασίας
    ' και το όνομα έχει τη μορφή: Sheet_20180824_150835
    sPath = ThisWorkbook.Path & "\Sheet_" & Format(Now(), "yyyymmdd\_hhmmss")

    rng.ExportAsFixedFormat Type:=xlTypePDF, Filename:="" & sPath, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=True
    Exit Sub
errHandler:
    MsgBox Err.Description, vbCritical, "Error #" & Err.Number
End Sub

Υ.Γ Το βιβλίο πρέπει να έχει αποθηκευτεί πριν από τη χρήση του κώδικα

Spirosgr 24-08-18 15:55

Καλό είναι, να κάνουμε μια έρευνα στο forum, πριν ζητήσουμε κάτι.

Πολλά παραδείγματα pdf...ένα από αυτά (τυχαίο) εδώ:
http://www.ms-office.gr/forum/excel-...si-os-pdf.html

skomat 25-08-18 07:27

Καλημέρα. Οκ συγγνώμη για το ποστ που δεν έκανα αναζήτηση, ακόμα μαθαίνω. Για να αποθηκεύσουμε σε pdf μια περιοχή ενός φίλου σε συγκεκριμένο φάκελο? Δηλαδή έστω ότι έχουμε το βιβλίο test και το φύλλο test1, θέλω να αποθηκευσω την περιοχη A1 έως G7, του φύλλου test1, στον φάκελο c:/user/data/test1.pdf. Θα με βόλευε η μη προηγούμενη αποθήκευση του βιβλίου. Σας ευχαριστώ για την διάθεση του πολύτιμου χρόνου σας.

Spirosgr 25-08-18 08:14

Καλημέρα
Ναι είναι ακριβώς αυτό που ζητάς, σε αντίθεση με τον κώδικα που πρότεινε ο Γιώργος
ο οποίος εκτυπώνει όλη την UsedRange, και όχι συγκεκριμένη περιοχή...
Κώδικας:

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

Στον κώδικα αρκεί να αλλάξουμε τις παραμέτρους του παραδείγματος,
με αυτά που θέλουμε στο βιβλίο μας
*Όπου έχει πράσινη γραμματοσειρά

Set PrintRange = Sheet1.Range("myPrintRange") ονόμασε την περιοχή σε myPrintRange ή πληκτρολόγησε
Set PrintRange = Sheet1.Range("a1:g7")

Set FileName = Sheet1.Range("myInvNumber") ονόμασε ένα κελί σε myInvNumber ή όπως θέλεις και βάλε μέσα τον τίτλο pdf ή
άλλαξέ το με μεταβλητή τίτλου

UName = "Spirosgr" άλλαξε με το δικό σου όνομα χρήστη
WhereToSave = "Desktop" κράτησέ το ή άλλαξε με ότι θέλεις πχ Documents

FolderName = "INVBackUp" άλλαξέ το με όνομα φακέλου των pdf σου πχ MyPdf
*Στο σημείο που θα αποθηκεύσεις πχ Desktop, βάλε φάκελο με το όνομα αυτό

Τέλος το OpenAfterPublish:=False ή True εμφανίζει ή όχι το pdf, μετά την αποθήκευση...

Σημείωση
Το path αποθήκευσης, μπορεί να μετατραπεί στο ίδιο path με το αρχείο excel
Ο κώδικας αφορά το παράδειγμα του link και μόνο (post #2)

skomat 25-08-18 08:27

Σε ευχαριστώ πάρα πολύ, θα το δοκιμάσω και θα ενημερώσω σχετικά το forum, σε ευχαριστώ!!!

Spirosgr 25-08-18 08:29

1 Συνημμένο(α)
Ρίξε μια ματιά και στην πιο κάτω εικόνα

skomat 25-08-18 09:10

1 Συνημμένο(α)
Σπύρο καλημέρα (μου επιτρέπεις φυσικά να σου μιλάω στον ενικο), εκανα καποιες αλλαγες στον κωδικα, σχετικα με την περιοχη εκτυπωσης, το αρχειο να σημειωσω δεν είναι τιμολογιο, απλα είναι ένα αρχειο καταγραφης αποτελεσματων ενός σωματειου, εσβησα μια γραμμη κωδικα, και μου βγαζει το ακολουθω μυνημα που σου επισυναπτω. Τι κανω λαθος?? Tο φυλλο ονομάζετε Apografi, και η περιοχη εκτυπωσης είναι από το A1 εως το AA69. Γιατι θα πρεπει να ονομασω ένα κελι που μου εστειλες στο τελευταιο παράδειγμα σου?? Σε ευχαριστω πολύ εκ των προτερων.!!!

Spirosgr 25-08-18 09:30

Η εικόνα δεν φαίνεται καλά, στο τι πρόβλημα υπάρχει...

Όμως εκεί που λες Set PrintRange = Apografi.Range("....
το Apografi είναι λάθος...
Θα βάλεις, το κωδικό όνομα του φύλλου, πχ Sheet1
ή θα ονομάσεις το κωδικό όνομα του φύλλου, Apografi.

Spirosgr 25-08-18 09:32

Για την ονομασία του κελιού...

Δεν είναι απαραίτητο, εκτός αν μπορείς (όπως σου είπα) να βάλεις μεταβλητή με τίτλο .pdf


Η ώρα είναι 07:37.

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


Search Engine Optimization by vBSEO 3.3.2