Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Εκτύπωση Τιτλων σε δευτερη σελίδα (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/5046-ektiposi-titlon-se-deyteri-selida.html)

Spirosgr 17-10-18 09:41

1 Συνημμένο(α)
Καλημέρα

Χθές, ανέβασα ένα βιβλίο με την εκτύπωση, στο οποίο υπήρξε κάποιο πρόβλημα,
διότι εκ παραδρομής δεν όρισα την περιοχή εκτύπωσης...

Διέγραψα το άρθρο και ανεβάζω το νέο διορθωμένο και συμπληρωμένο.

Στο βιβλίο, υπάρχει μια εκτύπωση με παραμέτρους, που προσωπικά όπως έχω πει
και στο παρελθόν, θεωρώ, ότι πάντα πρέπει να μπαίνουν
(αν και ο κώδικας είναι αργότερος κατά λίγα δευτερόλεπτα)
αλλά έχουμε με τον τρόπο αυτό, τον απόλυτο έλεγχο της εκτύπωσης.

Στο συγκεκριμένο έργο, μπήκαν δύο γραμμές κάτω από το INVOICE τίτλο,
που επαναλαμβάνουν τις γραμμές 38-39.
Οι γραμμές είναι κρυμμένες και δεν επηρεάζουν την φόρμα του τιμολογίου.

Ο κώδικας αναλαμβάνει να τις εμφανίσει όταν πρέπει,
διότι δεν υπάρχει κανείς άλλος σωστός (κατά την γνώμη μου)
τρόπος, να έχουμε επανάληψη τίτλων σε «σπασμένες» γραμμές.

Ακόμα προστέθηκε μια λειτουργία στον κώδικα, όπου
βρίσκει πόσα PageBrakes υπάρχουν και σε ποιά γραμμή,
ωστε να μην βάζουμε καρφωτά το σπάσιμο της σελίδας, μετρώντας manual τις γραμμές.

Ο κώδικας, σκόπημα κάνει ένα loop με step 2
στην στήλη p, όταν κρύβει κενές γραμμές τιμολογίου,
για να μην εμπλακούν κελιά με merge, που κακώς χρησιμοποιούνται.

Σε άλλο φύλλο, δημιουργήθηκε μια περιοχή με ονομασμένα κελιά
που εκεί μπορούμε να βάλουμε κείμενα με το τι θα θέλαμε να εμφανίζεται στους
Headers & Footers του φύλλου.
*Προεπιλογή: Ημερομηνία και Σελίδα Χ από σελίδες Ψ

Από εκεί, μπορούμε να επιλέξουμε και τον αριθμό των αντιγράφων μας.

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

Η περιοχή εκτύπωσης, ορίστηκε ως c3:p72 μέχρι την 72 γραμμή.
Στο παράδειγμα από εκεί και κάτω βλέπω κενό.
Αν παρ' όλα αυτά, υπάρχουν κάποιες γραμμές με κείμενα μέχρι την 80,
μπορεί να αλλάξει (οριστεί εκ νέου), χωρίς πρόβλημα,
αφού αλλάξουμε και στον κώδικα την Const EndLine As Integer = 72 σε 80

Ο κώδικας μπορεί εύκολα να προσαρμοστεί,
για περισσότερες των δύο σελίδων αν αυτό είναι χρήσιμο στο μέλλον.

Στον κώδικα χρησιμοποιώ Sh1, το κωδικό όνομα του φύλλου Invoice.
Sh0, το κωδικό όνομα του φύλλου H_F_Details.

kapetang 17-10-18 11:23

1 Συνημμένο(α)
Καλημέρα

Το αρχείο που επισυνάπτω, είναι αυτό που ανέβασε ο Σπύρος, αλλά του αφαίρεσα κάποιες γραμμές.

Αν πατήσουμε το κουμπί Print θα εκτυπωθούν 2 σελίδες, στις οποίες παρατήρησα τα εξής:

1) Η 1η σελίδα περιλαμβάνει ένα μέρος της περιοχής των συνόλων και αναγράφει στο υποσέλιδο «Σελίδα 1 από 1», ενώ είναι 1 από 2.

2) Η 2η σελίδα έχει τον τίτλο και μέρος της περιοχής των συνόλων, χωρίς να περιέχει προϊόντα.

Επίσης αναγράφει στο υποσέλιδο «Σελίδα 1 από 1», ενώ είναι 2 από 2.

ΥΓ
Επειδή δεν έχω εκτυπωτή, τα παραπάνω τα παρατήρησα σε προβολή προεπισκόπησης.

Διατηρώ συνεπώς κάποια επιφύλαξη.

Spirosgr 17-10-18 12:33

Ναι σωστά το βλέπεις...

Αυτό που ανέβασα, είναι τμήμα από ολόκληρο πρόγραμμα εκτυπώσεων
στο οποίο, «στέλνει» ο κύριος κώδικας κάποιες εντολές (if) στις παραμέτρους...

Για ευνόητους λόγους, δεν ανεβάζω το πλήρες πρόγραμμα, αλλά τμήματα
τα οποία μπορεί να λειτουργήσουν στο ζητούμενο...
και γι' αυτό υπάρχουν ατέλειες...

Για να λύσεις και αυτό το θέμα, (χωρίς να ανεβάσω κάτι άλλο)
βάλε μέσα στο With Sh1.HPageBreaks:
Μετά το pb = .Item(1)....
Κώδικας:

Sh1.PageSetup.RightFooter = "Σελίδα: 1 Από 2"
και Μετά το Sh1.Rows("$8:$9").Hidden...
Κώδικας:

Sh1.PageSetup.RightFooter = "Σελίδα: 2 Από 2"
αυτά αρκούν για να «μπαλώσουν» το...σφάλμα!


Η ώρα είναι 06:19.

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


Search Engine Optimization by vBSEO 3.3.2