Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 31-07-14, 19:07
Το avatar του χρήστη Spirosgr
Spirosgr Ο χρήστης Spirosgr δεν είναι συνδεδεμένος
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλησπέρα
Η excel με απλές ρυθμίσεις εκτύπωσης δεν μπορεί να κάνει κάτι τέτοιο.
Την λύση δίνει η VBA.
Υποθέτουμε ένα βιβλίο με φύλλο (χ) το οποίο έχει δεδομένα σε τυχαία περιοχή d3:m268
Δημιουργούνται 12 σελίδες για εκτύπωση.
Δεν θα έχουν κεφαλίδα & και υποσέλιδο η δεύτερη = 2 και η προτελευταία = 11
Οι υπόλοιπες θα έχουν:
ΚΕΝΤΡΙΚΗ ΚΕΦΑΛΙΔΑ = "Hello"
ΔΕΞΙ ΥΠΟΣΕΛΙΔΟ = "ms-office.gr"

Βάζουμε σε μια λειτουργική μονάδα τον κώδικα:

Κώδικας:
Sub CustomPageHdrFdr()
    'Μεταβλητές: ορισμός
    Dim PrAr As Range, PgCnt As Integer, i As Integer
    Dim CntrHdr As String, RgtFtr As String

    CntrHdr = Sh1.PageSetup.CenterHeader
    RgtFtr = Sh1.PageSetup.RightFooter

    'Αρχή μέτρησης σελίδων από μηδέν
    PgCnt = 0
    'Πόσες είναι οι σελίδες;
    PgCnt = (Sh1.HPageBreaks.Count + 1) * (Sh1.VPageBreaks.Count + 1)
    'Καθάρισε κεφαλίδα & υποσέλιδο πριν ξεκινήσεις
    CntrHdr = ""
    RgtFtr = ""
    'Αν το (i) είναι από 1 έως αριθμό σελίδων τότε:
    For i = 1 To PgCnt
        'Αν το (i) είναι 2 ή αν το (i) είναι αριθμός σελίδων -1 (προτελευταία) τότε:
        If i = 2 Or i = PgCnt - 1 Then
            'Εκτύπωσε την (i) σελίδα χωρίς κεφαλίδα ή υποσέλιδο
            CntrHdr = ""
            RgtFtr = ""
            Sh1.PrintOut from:=i, To:=i
            'Αλλιώς
        Else
            'Εκτύπωσε την (i) σελίδα με κεφαλίδα & υποσέλιδο όπως παρακάτω:
            CntrHdr = "Hello"    'κέντρο κεφαλίδα
            RgtFtr = "ms-office.gr"    'δεξί υποσέλιδο
            Sh1.PrintOut from:=i, To:=i
            'Κλείσε
        End If
        'Επανέλαβε έως να τελειώσουν οι σελίδες (i)
    Next i
End Sub
'Όπου Sh1 το κωδικό όνομα του φύλλου που θα εκτυπωθεί
'Μπορείτε να χρησιμοποιήσετε & ActiveSheet αντί Sh1

Τελευταία επεξεργασία από το χρήστη Spirosgr : 01-08-14 στις 13:13. Αιτία: ορθογραφία, σύνταξη
Απάντηση με παράθεση