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/6533-orismos-perioxon-os-perioxes-ektiposis.html)

Immortal 19-07-24 12:13

Ορισμός περιοχών ως περιοχές εκτύπωσης
 
1 Συνημμένο(α)
Καλημέρα σε όλους!
Πιστεύω να είστε καλά!

Στο βιβλίο που επισυνάπτω έχω στο ίδιο φύλλο 7 περιοχές, τις οποίες χρειάζομαι να είναι:
όλες περιοχές εκτύπωσης,
με περιθώρια 0,7 σε όλες τι πλευρές,
να προσαρμόζονται σε όλη τη σελίδα (π.χ. αν στο ύψος έχει προσαρμοστεί και όχι στο πλάτος, θα ρυθμίσω το πλάτος των στηλών χειροκίνητα εξ αρχής, μετά δε θα αλλάζει αυτό, ή αντίστροφα),
με επιλογή μου μέσα από το φύλλο να ορίζεται Landscape ή Portrait

Παρακάτω παραθέτω τον κώδικα για να κάτω τα παραπάνω:

Κώδικας:

Sub PrintPreviewNamedRanges()
    Dim ws As Worksheet
    Dim namedRanges As Variant
    Dim rangeName As Variant
    Dim namedRange As Range
    Dim orientation As XlPageOrientation
    Dim cellValue As String
   
    Set ws = ThisWorkbook.Sheets("Εκτυπώσεις")
   
    namedRanges = Array( _
        Array("Περιοχή1", ws.Cells(84, 9)), _
        Array("Περιοχή2", ws.Cells(85, 9)), _
        Array("Περιοχή3", ws.Cells(86, 9)), _
        Array("Περιοχή4", ws.Cells(87, 9)), _
        Array("Περιοχή5", ws.Cells(88, 9)), _
        Array("Περιοχή6", ws.Cells(89, 9)), _
        Array("Περιοχή7", ws.Cells(90, 9)) _
    )
   
    Application.ScreenUpdating = False
   
    For Each rangeName In namedRanges
        On Error Resume Next
        Set namedRange = ws.Range(rangeName(0))
        On Error GoTo 0
       
        If namedRange Is Nothing Then
            MsgBox "Named range '" & rangeName(0) & "' not found.", vbExclamation
        Else
            ws.PageSetup.printArea = namedRange.Address
           
            cellValue = rangeName(1).Value

            Select Case cellValue
                Case "Portrait"
                    orientation = xlPortrait
                Case "Landscape"
                    orientation = xlLandscape
                Case Else
                    orientation = xlPortrait
            End Select

            With ws.PageSetup
                .orientation = orientation
                .Zoom = False
                .FitToPagesWide = 1
                .FitToPagesTall = 1
               
                .TopMargin = Application.InchesToPoints(0.7)
                .BottomMargin = Application.InchesToPoints(0.7)
                .LeftMargin = Application.InchesToPoints(0.7)
                .RightMargin = Application.InchesToPoints(0.7)
            End With
           
            ws.PrintPreview
        End If
    Next rangeName
   
    Application.ScreenUpdating = True
End Sub

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

Υπάρχει τρόπος να μην υπάρχει αυτό στον κώδικα, να διατηρούνται ως περιοχές εκτύπωσης και οι 7 Περιοχές και να βλέπω την προεπισκόπηση μόνο εάν το επιλέξω εγώ από την προεπισκόπιση και εκτύπωση πάνω από την κορδέλα;

Φυσικά πάντα ευπρόσδεκτες επισημάνσεις, παρατηρήσεις και διορθώσεις!
Σας ευχαριστώ


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

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


Search Engine Optimization by vBSEO 3.3.2